Все конечно знают, что пароль - это хорошо… Но не так надежно, как, например, элктронные ключи. Преимущество ключей - высокая безопасность при авторизации. При использовании авторизации по ключу рекомендуется отключить авторизацию с помощью пароля. Это значительно повысит безопасность вашего сервера. А так же избавит вас от необходимости каждый раз вводить пароль при входе в систему.

Обновлено 21.03.2016

Авторизация с Windows машины с помощью PuTTY

Первое что нужно сделать, это генерировать ключ на сервере:

$ ssh-keygen -t rsa

При генерации можно указать путь/имя файлов ключей и защитить ли файлы ключей паролем. Можно ничего не вводить.

Далее переходим в каталог .ssh:

[admin@linux26.ru ~]# cd ~/.ssh

В каталоге ~/.ssh должны быть два сгенерированных файла id_rsa (приватный ключ) и id_rsa.pub (публичный ключ). Содержимое файла id_rsa.pub нужно внести в файл **authorized_keys**. Если файла authorized_keys не существует, он создастся:

[admin@linux26.ru .ssh]# cat id_rsa.pub >> authorized_keys

Далее на директорию .ssh и файл authorized_keys необходимо установить права на чтение и запись только владельцу:

[admin@linux26.ru .ssh]# chmod 600 authorized_keys

Теперь копируем приватный ключ “id_rsa” на нашу Windows машину и называем его каким-нибудь именем с расширением “.ppk”, например server-privatkey.pkk.

Прогоним ключ через puttygen. В окне puttygen нажимаем кнопку Load напротив “Load an existing private key file”, и сохраним результат, “Save private key” например как “server-privatkey.ppk”.

Добавим ключ в сеанс. Запускаем PuTTY, загружаем нужный сеанс или вводим данные для соединения и идем в “SSH - Auth”, выбираем наш приватный ключ, который был получен через обработку “puttygen”. Сохраняем сеанс.

Но удобнее использовать Pageant, который может хранить в себе ключи.

Авторизация с Linux машины

Способ 1

Для реализации авторизации по ключу проделываем следующие операции: генерируем пару ключей на том компьютере, с которого будем ходить на сервер

[admin@linux26.ru ~]# ssh-keygen -t rsa

На вопрос об имени файла можем не отвечать. По умолчанию создадутся ключи id_rsa (приватный ключ) и id_rsa.pub (публичный ключ) в .ssh каталоге домашней директории. Приватный ключ ВСЕГДА остается на сервере! Если Вы хотите авторизовываться на разных серверах разными ключами, то необходимо указать полное имя файла, включая путь.

Далее мы пойдем по второму варианту, зададим имя “key_name” для файлов ключей /home/user/.ssh/key_name:

Enter file in which to save the key (/root/.ssh/id_rsa): /home/user/.ssh/key_name

и укажем пароль для файлов ключей. Пароль для файлов ключей можно оставить пустым, но Вы рискуете, что кто нибудь может воспользоваться вашим ключом.

Переходим в директорию .ssh

[admin@linux26.ru ~]# cd .ssh

Файлы key_name и key_name.pub сгенерированы и лежат в /home/user/.ssh

[admin@linux26.ru .ssh]# ls
key_name  key_name.pub

Обезопасим себя и установим на приватный ключ права 600

[admin@linux26.ru .ssh]# chmod 600 key_name

Ну а содержимое публичного ключа key_name.pub нужно поместить в файл authorized_keys удаленному серверу в домашнем каталоге .ssh того пользователя, под которым будем авторизовываться на удаленном сервере.

Если на удаленном сервере в домашней директории пользователя не существует каталога .ssh и файла authorized_keys, то действуем следующим образом уже на удаленном сервере:

[webmaster@server ~]# mkdir .ssh
[webmaster@server ~]#
[webmaster@server ~]# echo '' >> .ssh/authorized_keys
[webmaster@server ~]#
[webmaster@server ~]# chmod 700 .ssh/
[webmaster@server ~]# chmod 600 .ssh/authorized_keys
[webmaster@server ~]#

Не забудьте перенести содержимое нашего публичного ключа key_name.pub с клиентской машины в файл authorized_keys пользователя удаленного сервера.

Далее необходимо разрешить авторизацию по ключу на удаленном сервере. Это можно сделать в файле конфигурации /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile	.ssh/authorized_keys

Теперь можно попробовать авторизоваться на удаленном сервере с нашей клиентской Linux машины: [admin@linux26.ru ~]# ssh -i '/home/user/.ssh/key_name' webmaster@server ... ... ... [webmaster@server ~]#

Здесь ключ -i указывает, что для идентификации необходимо использовать файл /home/user/.ssh/key_name. По умолчанию ssh берет id_rsa из .ssh директории пользователя.

Способ 2 - ssh-copy-id

В большинстве дистрибутивов Linux из коробки имеется утилита ssh-copy-id, которая позволяет автоматизировать перенос содержимого вашего публичного ключа на удаленный сервер.

Например, для того, что бы вы со своей машины могли авторизовываться на удаленном сервере, необходимо всего лишь выполнить команду

[admin@linux26.ru ~]# ssh-copy-id webmaster@server

После чего ввести пароль пользователя удаленной машины “webmaster”.

Если на удаленной машине порт отличный от 22

[admin@linux26.ru ~]# ssh-copy-id -p 2202 webmaster@server