30 авг. 2011 г.

Аутентификация SSH по ключам

Аутентификация SSH по ключам

С чего все началось, когда на работе появилось с десяток ubuntu серверов (половина тестовых), встал вопрос о повышении безопасного доступа по ssh к серверам. Что можно сделать:

  • длина пароля (>15  символов)
  • аутентификация по ключам 
Т.к. первое было сделано изначально, то второе нужно сделать, чтобы исключить атаку перебора пароля.
Есть два способа:
  1. Генерирование ключей на ubuntu а потом импорт в Putty
  2. Генерирование ключей в Putty а потом импорт в ubuntu
Но, необходимо для начала настроить ssh
редактируем  /etc/ssh/sshd_config
[root@server-dhcp ]# nano /etc/ssh/sshd_config
PermitRootLogin yes  (Если будете заходить на сервер под учетной записью root)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile    %h/.ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication no (Запрет аутентификации по паролю)
UsePAM no
Сохраняем изменения и перезапускаем службу
[root@server-dhcp]#service sshd restart
Теперь создаем папку .ssh в своем домашнем каталоге
[root@server-dhcp ]#mkdir .ssh
Нам нужен пустой файл authorized_keys в папке .ssh
Заходим в созданную папку .ssh
[root@server-dhcp .ssh]#cd .ssh
Создаем пустой файл authorized_keys
[root@server-dhcp .ssh]#cat 123.123 >> authorized_keys
Выставляем права на директорию .ssh/, и все что в ней находится:
[root@server-dhcp .ssh]# chmod -R 600 *
[root@server-dhcp .ssh]# chmod 700 ~/.ssh/


Способ первый
Делаем ключи на ubuntu,  а затем импортируем в Putty
[root@server-dhcp]# ssh-keygen  -t  rsa
Далее нам предлагают ответить на несколько вопросов:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
(по умолчанию ключи создаются в папке .ssh/)(здесь жмем ENTER, если вы не хотите сохранить их в другом месте)
Enter passphrase (empty for no passphrase):       
(здесь вводим парольную фразу для ключа)
Enter same passphrase again: 
(повторяем фразу)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
8c:6a:00:aa:78:ad:fb:70:d5:8c:d9:b8:6a:da:a4:f5 root@server-dhcp
Копируем ключ в  authorized_keys
[root@server-dhcp]#cat  /root/.ssh/id_rsa.pub  >> /home/имя пользователя/.ssh/authorized_keys
 Теперь с нашего сервера из папки /root/.ssh/ забираем с помощью WinSCP или любого другого ftp-клиента, на компьютер с которого будет производиться удаленный доступ,  закрытый ключ – id_rsa
Далее нам необходимо преобразовать наш закрытый ключ, в ключ поддерживаемый Putty. Делаем это с помощью Puttygen.
Если при импорте получили ошибку
попробуйте не простой puttygen, а developer snapshot, там добавили поддержку AES ключей. А все из-за того, что теперь ключи шифруются по стандарту AES-128 вместо 3DES
Вводим парольную фразу

Сохраняем наш новый ключ
Вот и все!

Способ второй

Генерируем ключ

Вводим ключевую фразу, и комментарии! Ни в коем случае не используйте кириллицу! 
Сохраняем секретный ключ.
Публичный ключ отображается в верхнем поле «Key» и имеет вид:
«ssh-rsa AAAAB3NzaC1yc*что-то*uJQ== rsa-key-».
Копируем содержимое поля «Public key for pasting into OpenSSH authorized_keys file» в оперативную память и закрываем PuttyGen.
Теперь нужно вставить скопированное в /home/имя пользователя/.ssh/authorized_keys
ВАЖНО! ключ в файле должен быть записан в одной строке без переносов.

Перепроверили!

Теперь нужно настроить Putty на работу с ключом.
Запустите Pageant

И добавьте приватный ключ (расширение ppk)
Введи вашу ключевую фразу

Теперь ваш ключ будет в списке.

Запускаем Putty

Вводим имя пользователя
Выбираем наш приватный ключ (расширение ppk)