Авторизация на SSH сервере по ключу

Дата публикации: 22-07-2013 | Автор: MelfisFettel | Рубрика: Ubuntu Server

Репозитарии устаревшего Ubuntu ServerКогда у Вас много серверов, очень достает каждый раз придумывать пароли для подключения через ssh на свою учетную запись. К счастью эта проблема легко решаема. Достаточно настроить Ваш ssh сервер на авторизацию по ключу. (А вообще началось все с того что в логах ssh одного из серверов я заметил попытку перебора пароля. Что дальше делать я уже прекрасно знал, но вопрос который меня до сих пор беспокоит, это что нужно некому лицу или группе лиц находящихся в Израиле на сервере в Канаде? :) Ну, это уже не мои проблемы.) Эта заметка поможет настроить Вам авторизацию на сервере SSH по ключу.

Далее по статье, я буду считать что у Вас уже установлен и настроен сервер Open-SSH Ладно. Для того что бы установить ssh сервер нужно выполнить следующую команду:

1
sudo apt-get install openssh-server
sudo apt-get install openssh-server

Для начала, произведем начальную настройку ssh сервера для авторизации по ключу. Откроем на редактирование файл /etc/ssh/sshd_config

1
sudo nano /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config

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

1
2
3
4
5
...........
RSAAuthentication yes
PubkeyAuthentication yes
...........
AuthorizedKeysFile     %h/.ssh/authorized_keys
...........
RSAAuthentication yes
PubkeyAuthentication yes
...........
AuthorizedKeysFile     %h/.ssh/authorized_keys

Перезапустим сервер ssh:

1
sudo restart ssh
sudo restart ssh

Итак, привели строки файла конфигурации ssh к требуемому виду.
Далее необходимо будет сгенерировать ключи для авторизации. Дальнейшие действия производятся на самом ssh сервере (Не на компьютере на котором вы будете работать при помощи ssh клиента, а именно там где установили open-ssh):

Вводим следующую команду:

1
ssh-keygen -t rsa
ssh-keygen -t rsa

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

Далее в ответ мы получим следующие строки:

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

1
2
Generating public/private rsa key pair.
Enter file in which to save the key (/home/melfis/.ssh/id_rsa):
Generating public/private rsa key pair.
Enter file in which to save the key (/home/melfis/.ssh/id_rsa):

Тут и далее, будем считать что в данном примере я ввел melfis.ru-rsa

Теперь система попросит ввести пароль для сертификата, я ввожу пароль.

1
2
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Сертификаты сгенерированы:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Your identification has been saved in melfis.ru-rsa.
Your public key has been saved in melfis.ru-rsa.pub.
The key fingerprint is:
23:3f:f4:5c:c4:48:6b:37:4c:ca:f5:24:29:63:e7:ae melfis@NAT-SERVER
The key's randomart image is:
+--[ RSA 2048]----+
|          . +..  |
|         o+Oo+   |
|         .*=* .  |
|         . o..   |
|      . S  ..    |
|       + + ..    |
|        o o.     |
|         .E      |
|                 |
+-----------------+
Your identification has been saved in melfis.ru-rsa.
Your public key has been saved in melfis.ru-rsa.pub.
The key fingerprint is:
23:3f:f4:5c:c4:48:6b:37:4c:ca:f5:24:29:63:e7:ae melfis@NAT-SERVER
The key's randomart image is:
+--[ RSA 2048]----+
|          . +..  |
|         o+Oo+   |
|         .*=* .  |
|         . o..   |
|      . S  ..    |
|       + + ..    |
|        o o.     |
|         .E      |
|                 |
+-----------------+

Теперь в папке в которой вы находились, имеются два ключа:

1
2
melfis.ru-rsa
melfis.ru-rsa.pub
melfis.ru-rsa
melfis.ru-rsa.pub

Один из них приватный: melfis.ru-rsa, другой публичный: melfis.ru-rsa.pub.

Теперь Вам необходимо установить на Ваш сервер сгенерированный ключ. (Да, мы находимся все еще на сервере где установлен Spen-SSH). По мимо установки ключа, мы сразу выставим права на хранилище ключей.
Выполним следующие команды:

1
2
cat melfis.ru-rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
cat melfis.ru-rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Теперь перейдем на компьютер, который должен быть авторизирован на ssh сервере по ключу. (Теперь мы работаем на Вашем локальном компьютере.)
Заберем ключ к себе на компьютер следующей командой (Я предопологаю, что Вы выполняли предыдущие пункты в домашнем каталоге пользователя на сервере):

1
scp ИМЯ_ПОЛЬЗОВАТЕЛЯ@АДРЕС_СЕРВЕРА:~/melfis-rsa ~/.ssh/melfis-key
scp ИМЯ_ПОЛЬЗОВАТЕЛЯ@АДРЕС_СЕРВЕРА:~/melfis-rsa ~/.ssh/melfis-key

После того как ключ получен, загрузим его в наше локальное хранилище:

1
ssh-add ~/.ssh/melfis-key
ssh-add ~/.ssh/melfis-key

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

1
ssh ИМЯ_ПОЛЬЗОВАТЕЛЯ@АДРЕС_СЕРВЕРА
ssh ИМЯ_ПОЛЬЗОВАТЕЛЯ@АДРЕС_СЕРВЕРА

В результате чего, пароль запрашиваться не будет. Если Вам удалось подключится к серверу SSH посредством ключа, то наверное не плохим решением будет полное отключение авторизации по паролю. Для этого на сервере необходимо открыть файл /etc/ssh/sshd_config и изменить следующую строку:

1
PasswordAuthentication yes
PasswordAuthentication yes

на вот такую:

1
PasswordAuthentication no
PasswordAuthentication no

И не забудьте перезапустить сервер Open-SSH

На этом все. Можете «слить» созданные вами ключи на флешку и использовать их для авторизации по ssh без ввода пароля.

Понравилась статья? Расскажи друзьям:


Комментариев (3)

А я использую одну и ту же пару приватный_ключ — публичный_ключ, на всех серверах куда имею доступ, т.е. на рабочих, на своих vps, и на домашнем сервере.

Вот не знаю, хорошо ли это с точки зрения безопасности? Ну разве что при краже приватного ключа, под угрозу попадает всё то, куда я имею доступ.

Ну, для начала «взломщику» нужно будет определить «круг» ресурсов используемых Вами с этим ключом, а потом уже пытаться использовать Ваш скомпрометированный ключ. Не думаю что это особая проблема. Хотя для vps я бы выделил отдельный ключ и пароль для авторизации ключа, так как в данном случае высока вероятность превращения в «зомби» (бота) не одного сайта, а целого сервера.

Отлиная статья. Одна из немногих, когда все делается с первого раза и все более чем понятно. Спасибо!

Обсудить