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 [email protected]
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, пароль не будет приниматься.

Рубрики: Linux

Добавить комментарий