Метод научного тыка
Заметки на память и вообще...

Беспарольный SSH доступ

25 Сентября 2017 0
ssh ubuntu 2 мин.

Надоело всякий раз вводить пароль для доступа на удаленный сервер. В моём случае это виртуальная машина с установленой Ubutnu. Есть выход! Называется это Passwordless SSH Login. Однако не стоит пугаться слова Passwordless (беспарольный). Это совсем не значит, что любой проходимец теперь будет иметь доступ к вашему серверу. Совсем нет. Для доступа всё так же нужен будет ключ. Единственная разница лишь в том, что ключ этот вводить будете не вы а ваша система. Организация беспарольного доступа делается всего в два простых шага:

  1. Генерация ключей доступа
  2. Копирование ключей на сервер

Генерация ключей доступа

На клиенте эта процедура выполняется всего один раз и состоит из всего одной команды:

ssh-keygen

В результате в папке ~/.ssh будут сгенерированы два ключа:

  1. Приватный ключ id_rsa Этот ключ никому не надо давать. Он потому и приватный, что предназначен только для вас.
  2. Публичный ключ 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

Соответственно свой публичный ключ можно скопировать на более чем один сервер.

Вот как-то так.