
Secure Shell (SSH) — это криптографический сетевой протокол, используемый для безопасного соединения между клиентом и сервером и поддерживающий различные механизмы аутентификации.
Два наиболее популярных механизма — аутентификация по паролю и аутентификация по открытому ключу. Использование SSH-ключей более безопасно и удобно, чем традиционная аутентификация по паролю.
В этом руководстве мы расскажем, как генерировать ключи SSH в системах Debian 9. Мы также покажем, как настроить аутентификацию на основе ключей SSH и подключаться к удалённым серверам Linux без ввода пароля.
Создание ключей SSH в Debian
Перед генерацией новой пары SSH-ключей проверьте наличие существующих SSH-ключей на клиентской машине Debian. Это можно сделать, выполнив следующую команду ls :
ls -l ~/.ssh/id_*.pub
Если вывод команды выше содержит что-то вроде No such file or directory или no matches found это означает, что у вас нет ключей SSH, и вы можете перейти к следующему шагу и сгенерировать новую пару ключей SSH.
Если у вас есть существующие ключи, вы можете либо использовать их и пропустить следующий шаг, либо создать резервную копию старых ключей и сгенерировать новые.
Начните с генерации новой пары ключей SSH длиной 4096 бит, указав свой адрес электронной почты в качестве комментария, с помощью следующей команды:
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
Вывод будет выглядеть примерно так:
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 remote_username@server_ip_address
Вам будет предложено ввести пароль remote_username :
remote_username@server_ip_address's password:
После аутентификации пользователя открытый ключ ~/.ssh/id_rsa.pub будет добавлен к файлу удаленного пользователя ~/.ssh/authorized_keys , и соединение будет закрыто.
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@server_ip_address'" and check to make sure that only the key(s) you wanted were added.
Если утилита 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:
ssh remote_username@server_ip_address
Если вы не установили пароль, вход в систему будет выполнен немедленно. В противном случае вам будет предложено ввести пароль.
Отключение аутентификации по паролю SSH
Чтобы добавить дополнительный уровень безопасности вашему серверу, вы можете отключить аутентификацию по паролю для SSH.
Перед отключением аутентификации по паролю SSH убедитесь, что вы можете войти на свой сервер без пароля, а пользователь, под которым вы входите, имеет права sudo .
Войдите на удаленный сервер:
ssh sudo_user@server_ip_address
Откройте файл конфигурации SSH /etc/ssh/sshd_config :
sudo vim /etc/ssh/sshd_config
Найдите следующие директивы и измените их следующим образом:
/etc/ssh/sshd_config
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
После завершения сохраните файл и перезапустите службу SSH с помощью следующей команды:
sudo systemctl restart ssh
На этом этапе аутентификация по паролю отключается.
Заключение
В этом руководстве вы узнали, как сгенерировать новую пару SSH-ключей и настроить аутентификацию на основе SSH-ключей. Вы можете добавить один и тот же ключ на несколько удалённых серверов.
Мы также показали вам, как отключить аутентификацию по паролю SSH и добавить дополнительный уровень безопасности на ваш сервер.
По умолчанию SSH прослушивает порт 22. Изменение порта SSH по умолчанию снижает риск автоматизированных атак.
Если вы регулярно подключаетесь к нескольким системам, вы можете упростить свой рабочий процесс, определив все свои соединения в файле конфигурации SSH .
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Безопасность Debian SSH Не используете Debian 9?
Выберите другую ОС: центос 7 центос 8 дебиан 10 убунту 18.04 убунту 20.04
Связанные руководства