Как создать открытый/закрытый SSH-ключ в Linux
Все линуксоиды частенько пользуются 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
Обзор ssh генерации ключа отличный, вопрос в другом для каких целей предназначен этот самый ssh ключ что он делает в чем помогает и так ли он необходим? Я с удовольствием почитал бы полный обзор про ssh а не только про его генерацию.
Немного не в тему но все же. если уважаемый автор осветит работу с git в деталях доступно — «для чайников» я с удовольствием изучу данный обзор
ssh ключ нужен для безопасности при частых соединениях по одному и тому же каналу. По сути — закручиваем гайки. Про git уже ответил)
Я так понял что id_rsa это локальный ключ, а id_rsa.pub это то что валяется на сервере.
А можно имея только id_rsa.pub (украсть) подключиться по протоколу ssh к серверу?
Возможен ли перехват id_rsa?.. или они генерируются исключительно под машину?
id_rsa перехватить нельзя, т.к. он никуда не передается а лежит на машине.
Использую ssh ключи уже 7 лет) Очень удобно! Особенно для доступов к серверам — исключается вероятность перехвата пароля злоумышленником и ручками не надо ничего вбивать.
Pingback: Как пользоваться SSH | Losst