На клиенте (откуда собираемся подключаться к серверу) нужно создать директорию ~/.ssh, если её нет:
mkdir ~/.ssh
Перейти в неё и сгенерировать ключи:
cd ~/.ssh ssh-keygen -t rsaКодовую фразу можно оставить пустой, это не так критично.
После этого в директории ~/.ssh у нас появляются 2 файла:
- id_rsa - личный ключ, его нужно беречь от чужих глаз и рук, как зеницу ока
- id_rsa.pub - публичный ключ, он будет храниться на серверах
Из соображений безопасности закрываем доступ к ~/.ssh всем, кроме себя:
chmod 700 ./.ssh chmod 600 ./.ssh/id_rsa
Теперь содержимое публичного ключа нужно сохранить на сервере в файле ~/.ssh/authorized_keys
Так же, как и на клиенте, закроем посторонним доступ к директории:
~/.ssh chmod 700 ~/.ssh/ chmod 600 ~/.ssh/authorized_keys
Проверьте, что SSH сервер принимает авторизацию по ключу, в файле /etc/ssh/sshd_config Раскомментируйте, или добавьте, если их нет, следующие строки:
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
Так же лучше запретить авторизацию по паролям (она нам теперь не нужна): /etc/ssh/sshd_config
PasswordAuthentication no PermitEmptyPasswords no
Теперь можете пробовать подключиться на сервер без пароля:
ssh user@serverДолжно получиться. Если нет — проверяйте журнал /var/log/auth.log на наличие ошибок
Под Windows для подключения можно использовать PuTTY или KiTTY, а создать ключи с помощью puttygen.exe