Прозрачная 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
[stextbox id=’info’]ИНФОРМАЦИЯ. При желании можно задать кодовое слово в полях Key passphrase
, Confirm passphrase
.[/stextbox]
Подключаемся с помощью 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 по ключам шифрования.
Обсуждение
Нет комментариев.