Как создать открытый/закрытый SSH-ключ в Linux

Как создать открытый/закрытый SSH-ключ в Linux

https://t.me/sysadminof

Все линуксоиды частенько пользуются SSH(Secure Shell) протоколом. Пользователи Windows так же иногда вынуждены с ним сталкиваться( например — некоторые хостинг провайдеры до сих пор предоставляют некоторую часть подробной информации об аккаунте именно по ssh ). Т.к. пользоваться протоколом иногда нужно довольно часто, вбивать все время при соединении с хостом пароль — задача довольно напряжная и, к тому же, еще и рискованная — в такие моменты пароль можно перехватить. Чтобы не гонять пароль туда сюда по сотне раз на дню, и придумали систему ssh-ключей. Созданию таких ключей будет посвящена эта статья.

Генерируем ключ

В линуксе, открываем консоль:

$ ssh-keygen -t rsa

можно так же создавать ключ, используя технологию DSA (Digital Signing Algorithm):

$ ssh-keygen -t dsa

Особенной разницы между этими технологиями для простого обывателя нет, обе достаточно надежны, поэтому в выборе можно особенно не заморачиваться.

На скриншоте ниже нам предлагают указать место для хранения нашего ключа. По умолчанию этобудет папка .ssh в вашей домашней директории. Для того, чтобы согласиться с настройками по умолчанию, просто нажимаем «Enter».

Дальше, нас попросят ввести идентификационную фразу. (ВНИМАНИЕ! Это не фраза для соединения с удаленным хостом.) Она нужна для разблокировки закрытого ключа, поэтому она не поможет нам получить доступ к удаленному серверу, даже если на нем хранится наш закрытый ключ. Ввод этой фразы не является обязательным. Чтобы оставить ее пустой, просто можно нажать «Enter».

Теперь наш открытый( публичный ) и закрытый SSH-ключи могут быть сгенерированы. Открываем файловый менеджер и переходим в директорию .ssh. Там должны лежать два файла: id_rsa и id_rsa.pub.

Загружаем файл id_rsa.pub в домашнюю директорию нашего удаленного хоста (под Linux). Далее нужно подключиться к нему с помощью SSH и переместить открытый ключ в его целевую директорию с помощью команд:

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

Решение возможных проблем

Теперь мы можем подключаться по ключу, но если вдруг что-то не получается, то нужно еще выставить права:

$ chmod -u=rwX,go= ~/.ssh
$ chmod -u=rw,go=r ~/.ssh/authorized_keys

Если это не помогло, смотрим конфигурационный файл SSH( в примере используем редактор nano ):

$ sudo nano /etc/ssh/sshd_config

Нужно проверить, чтобы следующие атрибуты имели корректные значения:

RSAAuthentication yes
PubkeyAuthentication yes 
PasswordAuthentication no

Дальше нажимаем «ctrl + o»(nano), чтобы сохранить изменения, затем «ctrl + x»(nano), чтобы закрыть файл.

Перезапускаем сервер SSH на удаленном хосте:

$ sudo /etc/init.d/ssh reload

На этом все. Теперь мы можем выполнить авторизацию по ssh-ключу со своим удаленным хостом с помощью команды:

$ ssh -i /path-to-private-key username@remote-host-ip-address



Report Page