SSH авторизация по ключу
Представим себе что у нас имеются десятки (о, ужас сотни машин) и к каждой надо запоминать различные пароли, а ставить один и тот же пароль не рекомендуется с точки зрения безопасности, также не удобно вводить пароль, например, в автоматических скриптах.
Поэтому SSH обеспечивает ещё один метод авторизации пользователя: по открытому ключу
Создаем ключи(открытый и закрытый):
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/ceval/.ssh/id_dsa): key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in key.
Your public key has been saved in key.pub.
далее ...
После выполнения у нас появиться 2 файла, в идеале должны появиться в директории .ssh, у меня появились в ~/home/ceval возможно надо было указать путь при создании ключа (/home/ceval/.ssh):
key - приватный ключ, держать в секрете .ssh
key.pub - публичный ключ, необходимо будет положить на сервер
Если ключи создались ~/home/ceval перемещаем их в .ssh и на всю директорию ставим права - только чтение пользователю:
$ chmod 700 ./.ssh
$ chmod 600 ./.ssh/key
Затем открытый ключ (key.pub) сохраняет на сервере в домашнем каталоге той учётной записи, куда он хочет войти в файле ~/.ssh/authorized_keys.
$ cat ~/.ssh/key.pub | ssh @ "cat - >> ~/.ssh/authorized_keys"
Так же для безопасности:
$ chown -R user /home/user/.ssh
$ chmod 700 /home/user/.ssh/
$ chmod 600 /home/user/.ssh/authorized_keys
Теперь проверяем
$ ssh [user]@[remote_server]
Если при создании ключа мы задали пароль, то при первом подключении его нужно будет ввести
Все должно работать и пускать без проблем, в случаи чего смотрим /var/log/auth.log
$ nano /var/log/auth.log
Так же можно убедиться что на сервере разрешена авторизация по ключу (установлено дефолту), для этого в файле /etc/ssh/sshd_config должны быть строки:
$ nano /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Если на сервере вообще хотим запретить авторизацию по паролям, выставляем параметр в /etc/ssh/sshd_config:
PasswordAuthentication no
PermitEmptyPasswords no
Комментариев: 4
У меня работает авторизация по ключам, но как сделать не возможным подключение по паролям?
Ниже мои настройки:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
посмотри параметр:
ChallengeResponseAuthentication no
Врете, я вот уже целый день пытаюсь настроить, легче по паролю.
Ни знаю что у тебя не получаться, но все прекрасно становилась по этой заметки, она была написана после всей установке и настройке, возможно может что пропустил, но до сих пор все работает прекрасно, по паролю может быть и легче, а если несколько серваков или десятки.