Varulv

Искатель

Доступ по 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
												

Отныне доступ к удаленному серверу будет по ключу, пароль больше не будет запрашиваться.

Обсудить этот пост