Для частого подключения по 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.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 по ключам шифрования.
Понравилась или оказалась полезной статья, поблагодари автора
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА
Оставить ответ