Secure Shell (SSH) — это криптографический сетевой протокол, используемый для безопасного соединения между клиентом и сервером, и поддерживает различные механизмы аутентификации. Зашифрованное соединение может использоваться для выполнения команд на сервере, туннелирования X11, переадресации портов и многого другого.
Основанные на пароле и открытом ключе два наиболее распространенных механизма аутентификации.
Аутентификация с использованием открытого ключа основана на использовании цифровых подписей и является более безопасной и удобной, чем традиционная аутентификация по паролю.
В этой статье описывается, как генерировать ключи SSH в системах Debian 10. Мы также покажем вам, как настроить аутентификацию на основе ключей SSH и подключаться к удаленным серверам Linux без ввода пароля.
Скорее всего, у вас уже есть пара ключей SSH на вашем клиентском компьютере Debian. Если вы генерируете новую пару ключей, старая будет перезаписана.
Выполните следующую команду ls, чтобы проверить, существуют ли файлы ключей:
ls -l ~/.ssh/id_*.pub
Если вывод команды выше содержит что-то вроде No such file or directoryили no matches found, это означает, что у вас нет ключей SSH, и вы можете перейти к следующему шагу и сгенерировать новую пару ключей 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 remote_username@server_ip_address
Если вы не установили пароль, вы сразу войдете в систему. В противном случае вам будет предложено ввести кодовую фразу.
Чтобы добавить дополнительный уровень безопасности на свой сервер, вы можете отключить аутентификацию по паролю SSH.
Перед отключением аутентификации по паролю убедитесь, что вы можете войти на свой сервер без пароля, и у пользователя, с которым вы входите, есть привилегии sudo.
Войдите в свой удаленный сервер:
ssh sudo_user@server_ip_address
Откройте файл конфигурации сервера 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.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.