Ви можете скопіювати свій відкритий ключ на віддалені машини. Поки ввімкнено автентифікацію відкритих ключів і ваш відкритий ключ присутній на віддаленій машині, ви можете 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 на пристрої, якщо ви внесете зміни в файл конфігурації.