Авторизация по SSH-ключу
В этой статье объясняется, как повысить безопасность сервера, заменив аутентификацию по паролю на SSH-ключи.
Брутфорс (взлом с помощью перебора паролей) – одна из самых распространенных угроз в сети Интернет. Даже опытные пользователи часто используют слишком простые пароли, что делает их уязвимыми для атак злоумышленников. Как правило, подбор паролей выполняется автоматически программами-ботами. Они сканируют подсети, определяют активные IP-адреса, затем происходит попытка входа по найденному адресу.
Рекомендуется создавать пароль как минимум из 9 случайных символов (такой пароль не будет подобран быстро). Проверить надежность Вашего пароля можно на специальном сайте, например, здесь.
Авторизация по SSH-ключу – более надежный способ, по сравнению с использованием пароля. При авторизации на нескольких серверах, SSH-ключ намного удобнее в использовании.
Создать ключ можно с помощью онлайн-сервисов (например, здесь), или на персональном компьютере используя специальные утилиты.
Создание SSH-ключа (Windows)
-
Рекомендуется использовать приложение PuTTYgen (устанавливается вместе с PuTTY). После запуска укажите тип ключа RSA (SSH2-RSA в более старых версиях), и нажмите «Generate».

-
Во время создания ключей проведите несколько раз курсором мышки в окне программы (для генерации случайных величин, используемых в ключах).

-
По окончанию процесса генерации сохраните закрытый и открытый ключ, нажав «Save public key» и «Save private key» соответственно (при сохранении Private key согласиться с сохранением без использования защитной фразы).


Создание SSH-ключа (Linux/MacOS)
-
Установите утилиту «Openssh».
-
Откройте утилиту «Терминал» и запустите команду:
ssh-keygen -t rsa -b 2048 -
Выберите путь для сохранения пары ключей.
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
-
При нажатии «Enter» ключи будут сохранены в каталог .ssh вашего домашнего каталога.
-
Если не хотите каждый раз вводить защитную фразу при использовании приватного ключа, просто нажмите «Enter».
Enter passphrase (empty for no passphrase):
Enter same passphrase again: -
Пара ключей создана. На экран будет выведена дополнительная информация.
-
id_rsa – стандартное название файла приватного (закрытого) ключа
-
id_rsa.pub – стандартное название файла публичного (открытого) ключа. Данный ключ необходимо копировать на серверы, к которым Вы хотите получать доступ при использовании приватного ключа.
-
Размещение ключей на сервере (Windows)
Public key (имеет расширение .pub) необходимо скопировать на сервер, в файл authorized_keys (рекомендуется использовать WinSCP или другую утилиту для работы с файлами на удаленном Linux-сервере).
-
Откройте с помощью текстового редактора два файла одновременно:
-
Файл authorized_keys через WinSCP на сервере.
-
Файл, в который был сохранен Public key на локальном компьютере.
-
-
Скопируйте содержимое ключа в authorized_keys.
-
Сохраните и закройте файл authorized_keys в WinSCP.
Размещение ключей на сервере (Linux/MacOS)
-
После того как были созданы ключи, выполните в утилите «Терминал» команду:
ssh-copy-id -i ~/.ssh/id_rsa user@host
где
-
~/.ssh/id_rsa – путь до закрытого ключа
-
user – имя пользователя
-
host – IP-адрес сервера
-
-
Включите на сервере аутентификацию с использованием ключа вместо пароля.
- Подключитесь к серверу с использованием пароля.
- Откройте файл /etc/ssh/sshd_config.
- Проверьте правильность указания пути к публичным ключам.
- Установите значение no у параметра PasswordAuthentication.
-
Перезапустите службу sshd на сервере в зависимости от версии ОС:
service sshd restartили
service ssh restart
Вход с использованием ключа (Windows)
-
В PuTTY укажите путь к закрытому ключу на Вашем компьютере (вкладка Connections > Auth).

-
При подключении Вы получите сообщение о том, что раньше не был использован ключ для авторизации на этом сервере.
-
Нажмите «Yes».

ВНИМАНИЕ! Вы должны увидеть предупреждение ТОЛЬКО при первом входе по ключу!
Если такое возникает на сервере, на котором Вы уже авторизовались с помощью ключа, то либо на сервере были изменены ключи, либо сервер подменен.
-
При успешной аутентификации с использованием ключа Вы получите доступ к командной строке сервера и сообщение вида:
Authenticating with public key "key-010103232"
где key-010103232 – имя вашего приватного ключа, указанное в файле authorized_keys.
Вход с использованием ключа (Linux/MacOS)
Для входа выполните команду:
ssh -i ~/.ssh/id_rsa user@host
где
-
~/.ssh/id_rsa – путь до закрытого ключа
-
user – имя пользователя
-
host – IP-адрес сервера
Если у вас остались какие-либо вопросы, вы можете задать их в онлайн чате в правом нижнем углу сайта или тикетом в техподдержку.