SSH авторизация по ключу

Дата: 13.03.2016Метки:

Настроив ssh авторизацию по ключу вы не только улучшите безопасность сервера, но и еще немного упростите себе жизнь. Вместо использования паролей, которые легко перехватить кейлоггером, в процессе ssh авторизации на сервере мы будем использовать RSA ключи. Для обеспечения хорошего уровня безопасности будет достаточно использовать длину ключа равной 2048 бит. Чтобы усложнить кражу, желательно хранить секретный ключ на зашифрованном разделе.

Если вы решили настроить на вашем сервере ssh авторизацию по ключу, первое, что необходимо сделать — это сгенерировать секретный и публичный RSA-ключи. Под Linux для генерации ключей я буду использовать ssh-keygen, для Windows есть утилита PuTTYgen. После генерации, публичный ключ копируется на сервер, а секретный ключ остается храниться на локальном компьютере.

Думаю, что с генерацией ключей в PuTTYgen проблем быть не должно. Запускаете программу, нажимаете Generate и потом начинаете беспорядочно водить курсор по экрану. Затем копируете публичный ключ из поля ‘Public key for pasting into OpenSSH authorized_keys file’ и жмете Save private key, чтобы сохранить публичный и приватный ключ.

Публичный ключ должен следующим образом:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEA98tvCKkB6hvDhA5XKuJjbcoly55n6toS+bXsZhPE2YYPqFm9wuqmTFTkqe/5LHGji0zB/60ifambCjJc5eL+ZyARIf6+c+2V1LGsBH07eA695LDOT3zhcIn5mxtgl1jqMc3ZtUUMQkpU494MHndWEssh9rbeJM1uGUl36ziUA8jUFtZmsKlVRtkD/syzWS3hqGQKNz4tk1yYWsCYYLUwYHd0uVZx5CNUu76G9dyiZ8F/c1I4xLjoOJKI+6d46cfNKHbRQZCygpAlEVWNKpavFZe2x8vpaDb/7LvK7MVcy0JgABzxTNz5F/h6x4nik4OivqQT4uECC3IVwKxTM1U2Nw== rsa-key-20160314

Скопируйте его в содержимое файла ~/.ssh/authorized_keys.

Для генерации пары ключей в Linux выполните команду:

ssh-keygen -t rsa -b 2048

Программа предложит указать каталог, в который будут будут сохранены файлы ключей и попросит ввести секретную фразу. Нажимаем Enter чтобы использовать параметры по умолчанию.

Если в предыдущем шаге вы не меняли настройки, программа сохранит ключи в каталог .ssh в домашней директории пользователя. Чтобы перейти в каталог с ключами выполните команду:

cd ~/.ssh

В каталоге лежат два файла: id_rsa — секретный ключ, id_rsa.pub — публичный ключ. Скопируйте в надежное место файл секретного ключа, а публичный ключ перенесите на сервер.

Заносим сгенерированный нами открытый ключ в авторизованные ключи сервера. Для этого скопируйте содержимое id_rsa.pub в конец файла authorized_keys:

cat id_rsa.pub >> ~/.ssh/authorized_keys

Настройте ssh авторизацию по ключу в конфиге OpenSSH сервера:

nano /etc/ssh/sshd_config

Приведите текущие настройки в соответствие параметрам ниже:

PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no

Чтобы отключить вход по паролю, изменяем значение параметра:

UseLogin no

Устанавливаем права:

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

Перезапустим ssh сервер для применения настроек.

service sshd restart

На этом настройка сервера закончена, далее переходим к настройке клиента.

Настройка ssh авторизации по ключу в Linux

Для ssh авторизации по ключу в Linux, создайте файл ~/.ssh/config и скопируйте в него строки ниже. Затем по аналогии укажите адрес сервера и расположение файла секретного ключа.

Host server.net
IdentityFile ~/.ssh/keys/id_rsa

Устанавливаем права на файл:

chmod 600 ~/.ssh/config

Чтобы зайти на сервер используя SSH авторизация по ключу, выполните команду:

ssh user@server.net

Если хотите вручную указать размещение ключа, выполните команду:

ssh -i ~/.ssh/id_rsa user@server.net

Настройка ssh авторизации по ключу в PuTTY

Для авторизации по ключу в PuTTY укажите расположение ключа в меню SSHAuth. Если ключ id_rsa сгенерирован в Linux, нужно перевести его в формат ppk с помощью утилиты PuTTYgen.