По умолчанию, когда вы пытаетесь войти через SSH, вам приходится каждый раз вводить пароль вручную. В этой заметке я расскажу как настроить безопасный вход без пароля используя ssh-keygen и ssh-copy-id
Генерируем пару ключей
Для генерации ключей на вашем домашнем Mac (linux, ПК или что там у вас) используем ssh-keygen, который скорее всего у вас уже установлен.
Возможно эти ключи уже сгенерированы, проверьте содержимое
~/.sshдиректории.
ssh-keygen -t rsa # Создаст пару ключей по пути ~/.ssh/(id_rsa|id_rsa.pub)Директорию, в которую сохраняется файл можно изменить Enter the file in which you wish to save they key, если не меняем, просто жмем Enter
Далее видим: Enter a passphrase (leave empty for no passphrase).
Вам не обязательно вводить кодовую фразу, но это настоятельно рекомендуется, поскольку она защищает ваш закрытый ключ в случае взлома. Злому хакеру все равно понадобится ваша кодовая фраза, чтобы разблокировать ваш ключ.
Копируем, созданный публичный ключ на сервер
Для удобного копирования ключей на сервер мы будем использовать утилиту ssh-copy-id, скорее всего она тоже установлена на вашем устройстве, если вы используете Mac и homebrew, можно установить ее так:
brew install ssh-copy-idКопируем публичный ключ (важно!!! копируем именно публичный ключ)
ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<server-ip>Вместо <username> и <server-ip> подставляем ваши значения. Терминал попросит вас ввести пароль, после чего перенесет ваш ключ на сервер и в последующие входы по ssh на этот сервер ввод пароля уже не потребуется!
Убедиться в этом можно так: ssh <username>@<server-ip>, если все шаги пройдены верно, после этой команды вы окажетесь на сервере!
Последний штрих - можно добавить alias для команды ssh <username>@<server-ip> чтобы не запоминать ip сервера, либо если у вас подключены автодополнения и вы используете только один сервер, этого может быть тоже достаточно. О том как настроить автодополнения в терминале на MacOS я писал тут - Как включить автодополнения в терминале на Mac OS


