SSH или Secure Shell — это зашифрованный протокол, который часто используется для взаимодействия и удаленного управления серверами. Если вы захотите что-либо сделать на удаленном сервере, скорее всего, вам придется воспользоваться SSH и работать через терминал.
В SSH существует несколько способов авторизации. Вы можете каждый раз вводить пароль пользователя или использовать более безопасный и надежный способ — ключи SSH. Что самое интересное, он более удобен для применения, вам даже не нужно будет вводить пароль. В предыдущей статье был рассмотрен способ подключения используя пароль. В этой статье мы рассмотрим как настраивается авторизация по ключу SSH.
Генерация SSH ключей.
Сгенерировать ключи для авторизации можно несколькими способами. Это можно сделать сразу на сервере, используя утилиту ssh-keygen.
Для генерации пары ключей в Linux выполните команду:
ssh-keygen -t rsa -b 2048
При этом используются ключи:
-t rsa
тип протокола алгоритма шифрования, можно указать rsa1, rsa или dsa
-b 2048
определяет количество бит в создаваемом ключе. Для ключей RSA минимальный размер составляет 768 бит, а по умолчанию – 2048 бит. Как правило, 2048 бит считается достаточным. DSA-ключи должны быть точно 1024 бит, как указано в FIPS 186-2.
Программа предложит указать каталог, в который будут будут сохранены файлы ключей и попросит ввести секретную фразу. Нажимаем Enter чтобы использовать параметры по умолчанию.
После чего, в директории, которую мы указали(по умолчанию ~/.ssh/
) появится два файла: id_rsa
— секретный ключ, id_rsa.pub
— публичный ключ. id_rsa
копируем себе на компьютер, в надежное место и удаляем с сервера. Его можно скопировать просто как текст или скачать сам файл по SFTP.
Для генерации пары ключей в Windows мы будем использовать утилиту PuTTY:
Скачайте инсталлятор Putty для Windows, выбрав разрядность Вашей ОС и установите Putty с настройками по умолчанию. Русскоязычную версию утилиты можно скачать на сайте putty.org.ru. В пакет входят нужные нам приложения – PuTTY: Telnet и SSH клиент, Pageant: агент SSH-аутентификации для PuTTY, PSCP и Plink, PuTTYgen: утилита для генерации SSH-ключей.
Запускаем приложение PuTTYgen, тут так же можно выбрать протокол и длину ключа, так же задать пароль ключа. Кликаем Generate для создания ключей, после водим мишкой по экрану приложения для генерации ключей:
После того, как ключ будет сгенерирован, программа отобразит окно с публичным ключом и отпечатком приватного.
Сохраняем приватный ключ в надежное место, нажав на кнопку Save private key.
Добавление публичного ключа
Имеющийся у нас публичный ключ нужно добавить на сервер в файл ~/.ssh/authorized_keys
Если ключ был получен на сервере, просто копируем его:
cat id_rsa.pub >> ~/.ssh/authorized_keys
Если ключ был получен в PuTTYgen – копируем его с окна программы. Если вы не сохранили ключ, откройте файл приватного ключа в PuTTYgen – программа выделит публичный ключ из приватного. Скопируйте его и вставьте в строку терминала в программе nano. Сделать это можно щелчком правой кнопки мыши.
nano ~/.ssh/authorized_keys
Нажатием Ctrl+X мы выйдем из редактора. Программа ещё раз спросит, сохранять ли изменения в файле. Нажимаем Y и выходим из редактора.
Добавление приватного ключа
Linux
Для ssh авторизации по ключу в Linux, создайте файл ~/.ssh/config
и скопируйте в него строки ниже. Затем по аналогии укажите адрес сервера и расположение файла секретного ключа.
Host server.net IdentityFile ~/.ssh/keys/id_rsa
Чтобы зайти на сервер используя SSH авторизация по ключу, выполните команду:
ssh user@server.net
Windows
Если приватный ключ был сгенерирован на сервере его необходимо конвертировать, так как формат файлов ключей OpenSSH отличается от формата ключей PuTTY. Для этого нужно запустить генератор ключей PuTTYgen и добавить туда файл, который мы сохранили ранее, нажав кнопку Load.
При этом мы получим уведомление, что ключ успешно импортирован.
Сохраняем приватный ключ в надежное место, нажав на кнопку Save private key. Помните, что файл приватного ключа должен быть надёжно защищён от доступа третьих лиц.
Теперь запускаем само приложение PuTTY. На вкладке Connection – SSH – Auth указываем путь к нашему Private key:
Теперь идем в раздел Session, указываем там IP и порт сервера, в поле Saved Sessions вводим название нашего соединения и нажимаем кнопку Save
Теперь, подключится к серверу можно просто кликнув 2 раза на названии соединения. При подключении вводим имя пользователя, нажимаем Enter, после чего подключение выполняется.
Если при сохранении приватного ключа был добавлен пароль – нужно будет ввести его.
Что бы вводить пароль только один раз, а не при открытии каждой новой сессии – воспользуемся утилитой Pageant.
Запускаем Pageant – он сразу появится в трее. Кликаем по нему правой кнопкой – выбираем Add key:
После выбора ключа – Pageant запросит указать к нему пароль. После того, как ключ будет добавлен в Pageant, мы сможем подключатся без ввода пароля ключа. Для работы этой функции Pageant должен быть запущен.
Отключение парольной аутентификации
Если пароль больше не будет использоваться, то для увеличения безопасности системы и чтобы защитить сервер от brute-force атак лучше вовсе отключить вход по паролю. Но убедитесь, что ключ надежно сохранен и вы его не потеряете, потому что по паролю вы больше не войдете.
Авторизуйтесь на сервере, затем откройте конфигурационный файл /etc/ssh/sshd_config
и найдите там директиву PasswordAuthentication
. Нужно установить ее значение в No:
PasswordAuthentication no
Теперь сохраните файл и перезапустите службу ssh:
sudo service ssh restart
Дальше будет возможно только подключение по ключу ssh, пароль не будет приниматься.
0 Comments