Беспарольный SSH доступ
Надоело всякий раз вводить пароль для доступа на удаленный сервер. В моём
случае это виртуальная машина с установленой Ubutnu
. Есть выход!
Называется это Passwordless SSH Login
. Однако не стоит пугаться
слова Passwordless
(беспарольный). Это совсем не значит, что любой
проходимец теперь будет иметь доступ к вашему серверу. Совсем нет. Для доступа
всё так же нужен будет ключ. Единственная разница лишь в том, что ключ этот
вводить будете не вы а ваша система.
Организация беспарольного доступа делается всего в два простых шага:
Генерация ключей доступа
На клиенте эта процедура выполняется всего один раз и состоит из всего одной команды:
ssh-keygen
В результате в папке ~/.ssh
будут сгенерированы два ключа:
- Приватный ключ
id_rsa
Этот ключ никому не надо давать. Он потому и приватный, что предназначен только для вас. - Публичный ключ
id_rsa.pub
Этот ключ можно раздать/скопировать всем, к кому вы хотите получить доступ
Копирование ключей на сервер
Для того, чтобы ваш сервер начал вас узнавать для предоставления беспарольного доступа необходимо скопировать на него свой публичный ключ. Делается это просто:
ssh-copy-id remote-user@remote-host
Сервер спросит пароль пользователя и в случае успешной аутентификации добавит ваш
публичный ключ в файл /homes/<remote-user>/.ssh/authorized_keys
Если команды ssh-copy-id
у вас не нашлось (что случается, но очень редко.
Например, не установлен пакет openssh-client
), то всё то же самое можно
сделать вручную:
cat ~/.ssh/id_rsa.pub | ssh remote-user@remote-host "cat >> ~/.ssh/authorized_keys"
Если всё прошло удачно, то теперь можно попробовать залогиниться на удалённый
сервер по ssh
ssh remote-user@remote-host
При этом сервер не должен спрашивать пароль.
В случае ручного добавления ключей необходимо уточнить уровень доступа к файлу
authorized_keys
на сервере. Доступ к этому файлу должен иметь только ваш
пользователь (remote-user@remote-host
).
remote-user@remote-host:~$ chmod u=rw ~/.ssh/authorized_keys
Соответственно свой публичный ключ можно скопировать на более чем один сервер.
Вот как-то так.