Прозрачная 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_rsa.pub открытый ключ (передается на хосты к которым будем подключатся)

 

В процессе генерации можно указать место сохранения ключей, отличную от предлогаемой по-умолчанию <homedir>/.ssh/.

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

 

Так же можно задать использование кодовой фразы, но это не обязательно.

 

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

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 . . |
|                 |
|                 |
|                 |
|                 |
+-----------------+

 

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

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

 

Вывод:

/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@192.168.1.5's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'jakonda@192.168.1.5'"
and check to make sure that only the key(s) you wanted were added.

 

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

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

 

Проверяем подключение (при первом подключении вероятно будет запрос на кеширование ключа, отвечаем Y):

ssh jakonda@192.168.1.5

 

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

PasswordAuthentication no

 

 

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

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

 

Как и в случае с Linux системами нужно сперва с генерировать ssh-ключи.

 

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

 

RSA-ключ успешно получен. Нужно скопировать текст из Public key for pasting into OpenSSH authorized_keys file для добавления его на желаемый хост.

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

 

ИНФОРМАЦИЯ. При желании можно задать кодовое слово в полях Key passphrase, Confirm passphrase.

 

Подключаемся с помощью PuTTy на удаленный хост и добавляем скопированную строку в echo "" в доверенные ключи:

mkdir -p .ssh && echo "" >> .ssh/authorized_keys

должно получится так:

mkdir -p .ssh && echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDK0KGb4+55nog+IK7lw1hDEtD0ghw1lxFBa8bCck29Adkj+0H0eLFQPl6F2Pn2Xgb+jqktjdlGVjy+nmeN0R8AYY77wjZRIXUmxJ7vLuTpQfULsxOHIRUrX38ImOw8ptjcqLZZ4wc+0iFbLCOUkNISp8YbO1KOr//fSAfK6/Yvd2Wmur3bIwY/dFMQuBfiwUi8RLeFyqLrcltnMfbIIjIrh3PDwxOX5AIBGB1DpvgOw/1tGQqGXhNKd5Qj6/jU71JSquOJowrcl3GL/aYFzyAy2HUGwpENEeOgG59JSMvKBqNJlPnpik5G6rr3l92Mex/oqmY/COjVAGRuORiCTzIH rsa-key-20231124" >> .ssh/authorized_keys

 

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

 

Запускаем его, на иконке в трее нажимаем правой кнопкой мыши и выбираем Add Key и указываем приватный ключ.

 

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

 

 

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

Authenticating with public key "rsa-key-20231124" from agent
Linux debian 5.10.0-26-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Nov 24 11:04:30 2023 from 10.51.90.90
jakonda@debian:~$

 

 

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

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

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

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

1 × 2 =

© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика