Настроив 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 укажите расположение ключа в меню SSH
— Auth
. Если ключ id_rsa
сгенерирован в Linux, нужно перевести его в формат ppk
с помощью утилиты PuTTYgen.