Как настроить беспарольный доступ по SSH в Linux

12 set 2022 3 min di lettura
Как настроить беспарольный доступ по SSH в Linux
Indice dei contenuti

Введение

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

В этом руководстве мы увидим, как настроить аутентификацию на основе ключей SSH и как подключиться к вашему серверу Linux без ввода пароля.

Настроить вход по SSH без пароля

Чтобы настроить беспарольный вход по SSH в Linux, все, что вам нужно сделать, это сгенерировать открытый ключ аутентификации и добавить его в ~/.ssh/authorized_keys.

Следующие шаги описывают процесс настройки входа в SSH без пароля.

Перед созданием новой пары ключей SSH проверьте, есть ли уже ключ SSH на клиентском компьютере, чтобы не перезаписать существующие ключи.

Выполните следующую команду ls, чтобы узнать, существуют ли какие-либо существующие ключи SSH:

ls -al ~/.ssh/id_*.pub

Если есть существующие ключи, вы можете использовать их и пропустить следующий шаг или создать резервную копию старых ключей и создать новый.

Если вы получаете какое-либо из следующих выходных сообщений, это означает, что у вас нет ключа SSH, и вы можете перейти к следующему шагу и создать новый.

No such file or directory
no matches found

Следующая команда сгенерирует новую пару 4096-битных ключей SSH с вашим адресом электронной почты в качестве комментария:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Нажмите Enter, чтобы принять путь и имя файла по умолчанию:

Enter file in which to save the key (/home/tuo_username/.ssh/id_rsa):

Затем инструмент ssh-keygen попросит вас ввести безопасную парольную фразу. Хотите ли вы использовать парольную фразу, зависит от вас, если вы решите использовать парольную фразу, вы получите дополнительный уровень безопасности. В большинстве случаев разработчики и системные администраторы используют SSH без парольной фразы, потому что это удобно для полностью автоматизированных процессов. Если вы не хотите использовать кодовую фразу, нажмите Enter.

Enter passphrase (empty for no passphrase):

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

ls ~/.ssh/id_*

Вы должны получить выходное сообщение, подобное следующему

/home/yourusername/.ssh/id_rsa /home/tuo_username/.ssh/id_rsa.pub

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

Самый простой способ скопировать открытый ключ на сервер — использовать команду ssh-copy-id. На локальном компьютере типа терминала:

ssh-copy-id remote_username@server_ip_address

Вам будет предложено ввести пароль remote_username:

remote_username@server_ip_address's password:

Как только пользователь будет аутентифицирован, открытый ключ будет добавлен в файл authorized_keys удаленного пользователя, и соединение будет закрыто.

Если по какой-либо причине ssh-copy-id недоступна на вашем локальном компьютере, вы можете использовать следующую команду для копирования открытого ключа:

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

После выполнения вышеуказанных шагов вы сможете войти на удаленный сервер без запроса пароля.

Чтобы попробовать, просто попробуйте получить доступ к вашему серверу через SSH:

ssh remote_username@server_ip_address

Если все прошло хорошо, вы сразу войдете в систему.

Отключение аутентификации по паролю SSH

Чтобы добавить дополнительный уровень безопасности серверу, вы можете отключить аутентификацию по паролю для SSH.

Прежде чем отключать аутентификацию по паролю SSH, убедитесь, что вы можете войти на сервер без пароля, а пользователь, под которым вы входите, имеет привилегии sudo.

Войдите на свой удаленный сервер с ключами SSH, либо как пользователь с привилегиями sudo или root:

ssh sudo_user@server_ip_address

Откройте файл конфигурации SSH /etc/ssh/sshd_config, найдите следующие директивы и отредактируйте следующим образом:

PasswordAuthentication no
 ChallengeResponseAuthentication no
 UsePAM no

По завершении сохраните файл и перезапустите службу SSH.

На серверах Ubuntu или Debian выполните следующую команду:

sudo systemctl restart ssh

На серверах CentOS или Fedora выполните следующую команду:

sudo systemctl restart sshd

Вывод

В этом руководстве вы узнали, как настроить аутентификацию на основе ключа SSH, которая позволяет вам входить на удаленный сервер без ввода пароля пользователя. Вы можете добавить один и тот же ключ к нескольким удаленным службам.

Мы также увидели, как отключить аутентификацию по паролю SSH и добавить дополнительный уровень безопасности на ваш сервер.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.