Ви можете скопіювати свій відкритий ключ на віддалені машини. Поки ввімкнено автентифікацію відкритих ключів і ваш відкритий ключ присутній на віддаленій машині, ви можете sshперейти на машини, не вводячи пароль.
Спочатку вам потрібно буде створити публічний / приватний ключ, наприклад:
ssh-keygen -t rsa
Дотримуйтесь підказок. Коли він запитує, чи хочете ви захистити ключ за допомогою парольної фрази, скажіть ТАК! Погана практика не захищати паролі вашими ключами, і я покажу, як потрібно лише раз вводити пароль.
Якщо у вас вже є ключ, ви можете пропустити крок вище.
Тепер, припускаючи, що ваш ключ ssh існує на вашому Mac як ~/.ssh/id_rsa.pub, ви можете встановити його на віддаленій машині, запустивши:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
У вашому прикладі конкретного сервера, цитованому вище, команда виглядатиме так:
cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Вам потрібно буде ввести пароль, root@123.456.789.012щоб виконати цю копію, але це повинен бути останній раз, коли це потрібно зробити. Якщо припустити, що віддалений сервер sshdналаштований на аутентифікацію публічно-приватного ключа, коли ви ввімкнете скриньку в коробку зараз, він не повинен запитувати пароль для rootоблікового запису - натомість він запитає пароль для вашого ключа . Прочитайте далі про те, як зробити це те, що вам не потрібно постійно вводити.
Повторіть вищезазначене для кожної машини, на яку потрібно ввімкнути ключі замість пароля.
Зауважте, кожен, хто захоплює ваш ~/.ssh/id_rsaфайл, може перейти на цю машину, як rootне вводячи пароль для віддаленої машини. Захист паролем файлу ключа гарантує, що їм потрібно знати пароль для цього ключа, щоб використовувати його. Переконайтеся, що файл захищений. Використовуйте шифрування диска на вашому Mac і дотримуйтесь прав доступу до файлу та ~/.ssh/каталогу.
Щоб полегшити використання ключа, не вводячи пароль кожен раз, OS X запускає ssh-agentпроцес у фоновому режимі на вашій машині. Цей агент буде кешувати ключове слово при першому використанні його, тому вам доведеться вводити свій пароль лише раз у раз. Якщо ви спите лише ваш комп'ютер, ніколи не перезавантажуйте його, ви можете проходити довгі періоди часу, не вводячи свій пароль.
Ви можете попередньо кешувати всі свої SSH ключі за ssh-agentдопомогою запуску:
ssh-add
Тепер вам потрібно лише запам'ятати ключовий пароль, а не безліч різних паролів облікового запису. Зазвичай я зберігаю свої ключові паролі в 1Password (без належності), ще більше спрощуючи, скільки паролів мені потрібно запам'ятати. Тоді я просто шукаю їх у 1Password і вирізаю і вставляю їх у Термінал, коли я перезавантажую свій Mac і примушую ssh-agentйого перезапустити.
Якщо ви комбінуєте копіювання свого ключа на віддалені машини з рішенням управління підключенням Terminal.app у цьому питанні , у вас буде щось дуже близьке до PuTTY для роботи з інтерфейсом GUI.
На стороні сервера перевірте /etc/ssh/sshd_configта переконайтесь:
PubkeyAuthentication yes
увімкнено в конфігурації (це за замовчуванням у OpenSSH). Ви також можете встановити:
PasswordAuthentication no
Поки ви там, тому автентифікація на основі пароля вимкнена, і ключі стають єдиним способом доступу до машини.
Вам потрібно буде перезапустити sshd на пристрої, якщо ви внесете зміни в файл конфігурації.