SSH - настройка доступа по публичному ключу

По умолчанию доступ на сервер по ssh настроен по паролю. Это не самая безопасная практика, так как на 22 порт постоянно обращаются боты, которые перебирают пароль. В таком случае атака будет длится довольно долго, но если вы редко меняете пароль и он не слишком сложный, атака увенчается успехом.
В данной статье я расскажу как настроить ssh доступ на сервер по ключу, расскажу какие еще могут быть настройки для вашего ssh сервера.

Первым шагом будет генерация ключа на клиентском компьютере. Для этого есть утилита ssh-keygen.
Запускаем ее:

ssh-keygen

Далее будет предложено ввести имя и место расположения открытого и закрытого ключа, по умолчанию они будут расположены в каталоге ~/.ssh/ и иметь название соответствующее типу шифрования. Чтобы выбрать тип шифрования, применяется параметр -t, возможные значения ecdsa, rsa, dsa. Также можно выбрать длину ключа шифрования с помощью числового параметра -b измеряемого в битах.
После ввода места расположения ключей будет предложено ввести пароль для защиты ваших ключей. Введение данного пароля снизит риск взлома ключей.

Для того чтобы сервер смог авторизовать пользователя по ключу необходимо скопировать содержимое публичного ключа (по умолчанию расширение .pub) на сервер. Предварительно на сервере необходимо настроить ssh. Для настройки используется /etc/ssh/sshd_config. Следующие параметры в этом файле должны быть выставлены таким образом:

PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys


PubkeyAuthentication - дает возможность авторизации по ключу.
AuthorizedKeysFile - указывает на путь до файла с ключами authorized_keys. %h означает домашнюю директорию авторизуемого пользователя.
В файл ~/.ssh/authorized_keys пользователя добавляем сгенерированный публичный ключ. Таких ключей в файле может быть много, каждый пишется с новой строки.

Отдельно стоит сказать про права на папку .ssh и файл authorized_keys. Владельцем этих папок должен быть пользователь. Папка .ssh должна иметь права 700, а файл authorized_keys - 600.
Теперь на клиентском компьютере можно зайти на сервер:

ssh user@host

На вашем клиентском компьютере может быть много ключей для различных серверов и станций. Чтобы использовать ключ для входа на определенный сервер используется файл config в директории ~/.ssh на клиентском компьютере.
Синтаксис следующий:

Host yourhost
  HostName yourhost.ru
  Port 2002
  User login
  IdentityFile ~/.ssh/


Параметры Port, HostName, User опциональны. Самое главное, что при попытке ssh соединения на сервер yourhost, будет использован приватный ключ указанный в переменной IdentityFile.


comments powered by Disqus