Доступ по SSH с помощью ключа
Повышаем безопасность доступа по SSH к удалённому компьютеру/серверу с помощью авторизации по ключу. Это может оказаться весьма полезным, например, не успел пробросить порт, для доступа по SSH к своему серверу, как тут же начались попытки подобрать логин/пароль.
В принципе ничто не мешает настроить файервол/ip-tables, придумать офигенно сложный пароль или использовать замечательную утилиту fail2ban.
Но лучше всего настроить удаленный доступ по ключу. Тем более, что это совсем не сложно.
Сначала необходимо создать ключи ssh, для этого существует утилита ssh-keygen, которая входит в набор утилит OpenSSH. По умолчанию она создаёт пару 2048-битных ключей, которые можно использовать не только для SSH. Выполним команду:
ssh-keygen
На сегодняшний день лучше использовать 4096-битные ключи:
ssh-keygen -t rsa -b 4096
Можно использовать ECDSA алгоритм, относительно новый алгоритм генерации ключей с использованием элиптических кривых, одобрен правительством США. Поддерживается большинством SSH клиентов
ssh-keygen -t ecdsa -b 521
Так же поддерживается ED25519, это новый алгоритм используется в OpenSSH. На сегодня поддерживается не всеми клиентами, использовать стоит с осторожностью.
ssh-keygen -t ed25519
Утилита предложит выбрать место для расположения ключей. По умолчанию ключи распологаются в папке /home/имяпользователя/.ssh. Оставляем как есть. Так же утилита предложит ввести пароль, он используется для дополнительного шифрования ключа на диске. Можно не указывать, а просто нажать Enter.
И так теперь у нас есть два ключа: закрытый - id_rsa и открытый- id_rsa.pub. Осталось только загрузить открытый ключ на удаленный сервер. Для этого можно использовать утилиту ssh-copy-id. Чтобы воспользоваться этим способом необходимо иметь пароль доступа к удаленному серверу. Если не менялся стандартный порт SSH, то использование команды выглядит так:
ssh-copy-id [email protected]_host
Если порт менялся, тогда так:
ssh-copy-id -p "port" [email protected]_host
Утилита загрузит ваш открытый ключ на сервер в файл ~/.ssh/authorized_keys. Все можно подключаться к удаленному серверу, пароль больше не требуется.
Не забудем отключить авторизацию по паролю. Для этого подключаемся к удаленному серверу, открываем файл sshd_config ищем PasswordAuthenticatin:
sudo nano /etc/ssh/sshd_config
устанавливаем
ChallengeResponseAuthentication no PasswordAuthentication no
Перезагружаем службу sshd:
sudo service sshd restart
Отныне доступ к удаленному серверу будет по ключу, пароль больше не будет запрашиваться.
Обсудить этот пост