Прозрачная SSH авторизация с использованием ключей шифрования

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

 

Генерация SSH ключей в Linux системах

Генерация ключей производится с помощью утилиты ssh-keygen, входящую в состав OpenSSH.

Для генерации DSA-ключей (длина ключа всегда — 1024 бита):

ssh-keygen -t dsa

На выходе в каталоге ~/.ssh/ получаем файлы: id_dsa, id_dsa.pub.

Для генерации RSA-ключей (длина ключа по-умолчанию — 2048 бит):

ssh-keygen -t rsa

На выходе в каталоге ~/.ssh/ получаем файлы: id_rsa, id_rsa.pub.

Пояснения по с генерированным файлам:

id_rsa (id_dsa) — секретный ключ (остаётся у клиента).
id_rsa.pub (id_dsa.pub) — открытый ключ (передается на хосты к которым будем подключатся).

 

Генерация ключей производится на том хосте с которого хотим подключатся на другие хосты. На пример с генерируем 4096 битный RSA-ключ:

ssh-keygen -t rsa -b 4096

Нажимаем Enter, чтобы ключи были сохранены в директорию по-умолчанию:

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

Можно задать использование кодовой фразы, но это не обязательно. Если задать кодовую фразу, то при каждом подключении по SSH, будет запрошен ввод кодовой фразы, что безусловно большой плюс к безопасности, на тот случай если закрытый ключ попадет к злоумышленникам. Но недостаток использования кодового слова, это необходимость его ввода каждый раз при подключении по SSH. В моем случае это не нужно, поэтому нажимаю Enter, Enter.

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

Итоговый вывод генерации ключей вот такой:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/jakonda/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/jakonda/.ssh/id_rsa.
Your public key has been saved in /home/jakonda/.ssh/id_rsa.pub.
The key fingerprint is:
21:77:f3:30:e6:55:0e:72:c3:42:dd:07:b2:67:00:b6 jakonda@SYSADMPK
The key's randomart image is:
+--[ RSA 4096]----+
|         .=+*.o. |
|         ..+oO. .|
|      . o E.o +. |
|         o = * o |
|           S . . |
|                 |
|                 |
|                 |
|                 |
+-----------------+

Теперь передаем публичный RSA-ключ (id_rsa.pub) на хост к которому хотим подключатся по SSH:

ssh-copy-id -i /home/jakonda/.ssh/id_rsa.pub jakonda@10.7.8.253

Вывод:

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
jakonda@10.7.8.253's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'jakonda@10.7.8.253'"
and check to make sure that only the key(s) you wanted were added.

Так же можно добавить публичный ключ в ручную, выполнив команду:

cat ~/.ssh/id_rsa.pub | ssh 10.7.8.253 -l jakonda "mkdir -p .ssh && cat >> .ssh/authorized_keys"

Теперь можем прозрачно подключится к хосту:

ssh jakonda@10.7.8.253

 

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

PasswordAuthentication no

 

Генерация SSH ключей в ОС Windows

Для подключения по SSH в Windows обычно используется утилита PuTTY (скачать ее можно тут). Разберем как в PuTTY использовать прозрачное подключение по SSH и генерировать SSH ключи. Как и в случае с Linux системами нужно сперва с генерировать SSH-ключи.

 

Запускаем PuTTY Key Generator (PUTTYGEN). Выбираем тип ключа RSA, можно при желании изменить битность генерируемого ключа, оставляю по-умолчанию 2048. Нажимаем Generate, водим мышкой для генерации.

RSA-ключ успешно получен. При желании можно задать кодовое слово в полях Key passphrase, Confirm passphrase.

Сохраняем публичный ключ Save public key, указываем название его id_rsa.pub.

Сохраняем приватный ключ Save private key, указываем произвольное имя.

Теперь передаем публичный RSA-ключ (id_rsa.pub) на хост к которому хотим подключатся по SSH. Запускаем PSFTP из скачанного набора утилит PuTTY.

Подключаемся к нужному хосту командой (прим. 10.7.8.253):

open 10.7.8.253

Если впервые подключаемся, то пишем (Y) на запрос использования ключа из кеша. Далее указываем логин и пароль для подключения.

Копируем id_rsa.pub командой:

put id_rsa.pub

Вывод:

local:id_rsa.pub => remote:/home/jakonda/id_rsa.pub

Скопированный RSA-ключ необходимо добавить на удаленном хосте в ~/.ssh/authorized_keys. Подключаемся с помощью PuTTY на удаленный хост и выполняем команду:

mkdir -p .ssh && ssh-keygen -i -f id_rsa.pub >> .ssh/authorized_keys

Для того чтобы прозрачно подключатся, нужно приватный ключ добавить в SSH-агента (PAGEANT). Запускаем его, на иконке в трее нажимаем правой кнопкой мыши и выбираем Add Key. Указываем приватный ключ.

Двойным щелчком по иконке SSH-агента в трее, выведет нам список всех добавленных приватных ключей. Видим что добавленный ключ присутствует.

Запускаем PuTTY и подключаемся к хосту. Вводим логин и организовываемся без пароля. При подключении видно что использовался RSA-ключ:

Authenticating with public key "rsa-key-20080908" from agent

 

Вот так выполняется организация доступа к SSH по ключам шифрования.

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Оставить ответ

четырнадцать + восемь =