Введение
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 и добавить дополнительный уровень безопасности на ваш сервер.