Secure Shell (SSH) — это сетевой протокол для создания безопасного соединения между клиентом и сервером. С помощью SSH вы можете запускать команды на удаленных компьютерах, создавать туннели, переадресовывать порты и многое другое.
SSH поддерживает различные механизмы аутентификации. Двумя наиболее распространенными являются аутентификация на основе пароля и открытого ключа.
Аутентификация с использованием открытого ключа основана на использовании цифровых подписей и является более безопасной и удобной, чем традиционная аутентификация по паролю.
В этой статье объясняется, как генерировать ключи SSH в системах Ubuntu 20.04. Мы также покажем вам, как настроить аутентификацию на основе ключей SSH и подключаться к удаленным серверам Linux без ввода пароля.
Скорее всего, у вас уже есть пара ключей SSH на клиентском компьютере Ubuntu. Если вы генерируете новую пару ключей, старая будет перезаписана. Чтобы проверить, существуют ли файлы ключей, выполните следующую команду 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.
Enter passphrase (empty for no passphrase):
Все взаимодействие выглядит так:
Чтобы убедиться, что ваша новая пара ключей SSH сгенерирована, введите:
ls ~/.ssh/id_*
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
Вот и все. Вы успешно сгенерировали пару ключей SSH на своем клиентском компьютере Ubuntu.
Теперь, когда у вас есть пара ключей SSH, следующий шаг — скопировать открытый ключ на удаленный сервер, которым вы хотите управлять.
Самый простой и рекомендуемый способ скопировать открытый ключ на сервер — использовать инструмент ssh-copy-id. На вашем локальном компьютере тип:
ssh-copy-id remote_username@server_ip_address
Вам будет предложено ввести пароль удаленного пользователя:
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 в текстовом редакторе:
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.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.