ssh – вход по ключам
На клиентской машине, откуда собираемся коннектиться к SSH серверу:
cd ~/.ssh
ssh-keygen -t rsa
На все вопросы отвечаем Enter-ом, тем самым создавая пару ключей, без passfrase (пароля, который будет требоваться при активации ключа). Если вам к ключу еще необходим и пароль, то его также можно указать в момент его запроса.
В итоге в директории .ssh появляются 2 файла:
id_rsa – приватный ключ, держать в секрете! а лучше на зашифрованном томе
id_rsa.pub – публичный ключ, необходимо будет положить на сервер
На всю директорию .ssh ставим права – только чтение пользователю. Т.е.
chmod 700 ./.ssh
chmod 600 ./.ssh/id_rsa
Публичный ключ – на сервер
После создания пары ключей, приватный – остается у пользователя в секрете, а публичный необходимо положить в домашнюю директорию пользователя, в файл ~/.ssh/authorized_keys
На ssh сервере:
cat ./user.pub >> /home/user/.ssh/authorized_keys
chown -R user /home/user/.ssh
chmod 700 /home/user/.ssh/
chmod 600 /home/user/.ssh/authorized_keys
Также убедитесь что на сервере разрешена авторизация по ключу, для этого в файле /etc/ssh/sshd_config должны быть строки:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Если наш пользователь будет совсем без пароля, то для этого нужно в файле /etc/shadow заменить хеш пользовательского пароля на символ *. Пример (cat /etc/shadow) :
user:*:13783:0:99999:7:::
А если на сервере вообще хотим запретить авторизацию по паролям, выставляем параметр в /etc/ssh/sshd_config:
PasswordAuthentication no
PermitEmptyPasswords no
Проверка
На клиентской машине запускаем:
ssh -v user@host
должно пропустить без запросов. Если что не так – смотрим на сервере лог /var/log/auth.log
Теги: ssh