Введение
Secure Shell (SSH) — это криптографический сетевой протокол, используемый для безопасного соединения между клиентом и сервером и поддерживающий различные механизмы аутентификации. Зашифрованное соединение можно использовать для выполнения команд на сервере, туннелирования X11, переадресации портов и многого другого.
Пароль и открытый ключ — два наиболее распространенных механизма аутентификации.
Аутентификация с открытым ключом основана на использовании цифровых подписей и является более безопасной и удобной, чем традиционная аутентификация по паролю.
В этой статье описывается, как генерировать ключи SSH в системах Debian 10. Мы также покажем вам, как настроить аутентификацию на основе ключей SSH и подключаться к удаленным серверам Linux без ввода пароля.
Создание ключей SSH в Debian
Скорее всего, у вас уже есть пара ключей SSH на клиентском компьютере Debian. Если вы создаете новую пару ключей, старая будет перезаписана.
Выполните следующую команду ls
, чтобы проверить наличие файлов ключей:
ls -l ~/.ssh/id_*.pub
Если вывод приведенной выше команды содержит что-то вроде No such file or directory
» или « no matches found
», это означает, что у вас нет ключей SSH, и вы можете перейти к следующему шагу и создать новую пару ключей SSH.
В противном случае, если у вас есть пара ключей SSH, вы можете использовать их или сделать резервную копию старых ключей и сгенерировать новые.
Создайте новую пару 4096-битных ключей SSH с вашим адресом электронной почты в качестве комментария, введя следующую команду:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Вывод будет выглядеть следующим образом:
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
Нажмите Enter
, чтобы принять путь и имя файла по умолчанию.
Далее вам будет предложено ввести безопасную парольную фразу. Если вы хотите использовать кодовую фразу, это зависит от вас. Парольная фраза добавляет дополнительный уровень безопасности.
Enter passphrase (empty for no passphrase):
Если вы не хотите использовать кодовую фразу, просто нажмите Enter
.
Чтобы убедиться, что пара ключей SSH сгенерирована, выполните следующую команду:
ls ~/.ssh/id_*
Команда покажет ключевые файлы:
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
Скопируйте открытый ключ на сервер
Теперь, когда у вас есть пара ключей SSH, следующим шагом будет копирование открытого ключа на сервер, которым вы хотите управлять.
Самый простой и рекомендуемый способ скопировать открытый ключ на удаленный сервер — использовать инструмент ssh-copy-id
.
Выполните следующую команду на локальном компьютере:
ssh-copy-id nome_utente_remoto@indirizzo_ip_server
Вам будет предложено ввести пароль пользователя nome_utente_remoto
:
nome_utente_remoto@indirizzo_ip_server's password:
После аутентификации пользователя содержимое файла открытого ключа ( ~/.ssh/id_rsa.pub
) будет добавлено в файл ~/.ssh/~/.ssh/authorized_keys
удаленного пользователя, и соединение будет закрыто.
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'nome_utente_remoto@indirizzo_ip_server'"
and check to make sure that only the key(s) you wanted were added.
Если ssh-copy-id
недоступна на локальном компьютере, используйте следующую команду для копирования открытого ключа:
cat ~/.ssh/id_rsa.pub | ssh nome_utente_remoto@indirizzo_ip_server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Войдите на сервер, используя ключи SSH
На этом этапе вы сможете войти на удаленный сервер без запроса пароля.
Чтобы проверить это, попробуйте подключиться к серверу через SSH:
ssh nome_utente_remoto@indirizzo_ip_server
Если вы не установили парольную фразу, немедленно войдите в систему. В противном случае вам будет предложено ввести парольную фразу.
Отключить аутентификацию по паролю SSH
Чтобы добавить дополнительный уровень безопасности серверу, вы можете отключить аутентификацию по паролю SSH.
Прежде чем отключать аутентификацию по паролю, убедитесь, что вы можете войти на сервер без пароля и что пользователь, под которым вы входите, имеет привилегии sudo.
Войдите на удаленный сервер:
ssh nome_utente_sudo@indirizzo_ip_server
Откройте файл конфигурации SSH-сервера /etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
Найдите следующие директивы и измените их следующим образом:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
После этого сохраните файл и перезапустите службу SSH:
sudo systemctl restart ssh
На данный момент аутентификация на основе пароля отключена.
Вывод
Мы показали вам, как сгенерировать новую пару ключей SSH и настроить аутентификацию на основе ключей SSH. Вы можете использовать один и тот же ключ для управления несколькими удаленными серверами. Вы также узнали, как отключить аутентификацию по паролю SSH и добавить дополнительный уровень безопасности на ваш сервер.
По умолчанию SSH прослушивает порт 22. Изменение порта SSH по умолчанию снижает риск автоматических атак. Чтобы упростить рабочий процесс, используйте файл конфигурации SSH для определения всех соединений SSH.