Упрощенная двухэтапная настройка SSH без пароля на Ubuntu

Упрощенная двухэтапная настройка SSH без пароля на Ubuntu

07.12.2023
Автор: HostZealot Team
2 мин.
607

Повышение удобства работы с сервером - одно из важных направлений организации рабочего процесса для каждого пользователя. Если у вас есть VPS или выделенный сервер, вы каждый раз используете одно и то же устройство для доступа к нему, и вам надоело каждый раз вводить пароль при работе с сервером, то вам может быть интересна настройка беспарольного входа на сервер. Для этого необходимо настроить метод аутентификации с открытым ключом, который является альтернативой методу аутентификации с паролем. В этом руководстве мы подробно рассмотрим, как настроить такой метод на удаленном рабочем столе, если вы являетесь пользователем Ubuntu.

Краткое руководство по созданию SSH-аутентификации без пароля

Шаг 1: Генерация пары открытый/закрытый ключ на рабочем столе Ubuntu

Первым шагом является генерация пары открытый/закрытый ключ на рабочем столе Ubuntu. Для этого на рабочем столе Ubuntu (не на сервере) введите команду:

ssh-keygen -t rsa -b 4096

Эта команда отвечает за создание пары ключей типа RSE по умолчанию

  • t означает "тип".
  • b означает "биты". Стандартная длина ключа составляет 3072 бита. По желанию можно увеличить ее для достижения более высокого уровня безопасности.

Вы можете нажать Enter, чтобы принять расположение по умолчанию (~/.ssh/id_rsa) и оставить парольную фразу пустой для удобства или добавить ее для дополнительной защиты.

После того как все будет сгенерировано, вы увидите нечто вроде:

Your identification has been saved in /home/your_username/.ssh/id_rsa.

Your public key has been saved in /home/your_username/.ssh/id_rsa.pub.

Шаг 2: Загрузка открытого ключа на удаленный Linux-сервер

Теперь, когда все необходимые ключи сгенерированы, можно загрузить их на свой сервер. Это не обязательно должен быть сервер Ubuntu, он может работать под управлением любого дистрибутива Linux, если на нем запущен сервер OpenSSH.

Сначала введите следующую команду для копирования публичного сервера на удаленный рабочий стол. Вместо слов "your_username" и "remote_server_ip" следует указать соответствующие имя пользователя и IP-адрес.

ssh-copy-id your_username@remote_server_ip

Далее вам будет предложено ввести пароль удаленного сервера, если вы задали кодовую фразу на предыдущем шаге.

После того как ключ будет скопирован, вы увидите аналогичный вывод:

Number of keys added: 1

С этого момента вы установили беспарольный вход на свой сервер.

Отключение аутентификации по паролю

После настройки беспарольной аутентификации можно пойти дальше и отключить аутентификацию по паролю, оставив только аутентификацию по SSH-ключу, чтобы еще больше повысить уровень безопасности и сделать сервер еще более защищенным. Для этого необходимо:

  • Зайти на свой сервер:
ssh your_username@remote_server_ip
  • Открыть файл /etc/ssh/sshd_config на сервере с помощью удобного для вас текстового редактора (например, Nano или Vim)
  • Найти следующую строку и измените ее значение на no:
PasswordAuthentication no
  • Найти строку ChallengeResponseAuthentication и убедиться, что ее статус также стоит на no
ChallengeResponseAuthentication no
  • Сохраните и выйдите из текстового редактора.
  • Перезапустите службу SSH для применения изменений:
Debian/Ubuntu:
sudo systemctl restart ssh
RHEL/CentOS:
sudo systemctl restart sshd

Теперь аутентификация по паролю должна быть полностью отключена, а попытки доступа без ключей аутентификации не будут давать результата, выдавая сообщения типа Permission denied (publickey) или Read: Connection reset by peer.

Следует помнить, что и PasswordAuthentication, и ChallengeResponseAuthentication должны быть установлены в значение "no", иначе парольная аутентификация будет по-прежнему доступна.

Защита пары открытых/закрытых ключей с помощью резервных копий

После завершения настройки пары открытый/закрытый ключ следующим шагом будет создание их резервных копий. Поскольку ключи теперь необходимы для входа на сервер, их потеря может привести к потере доступа к серверу. По этой причине необходимо создать резервные копии пары открытый/закрытый ключ в безопасном месте, к которому можно легко получить доступ (например, на USB-накопителе и т.п.) Рассмотрим пошагово, как создать резервную копию пары открытый/закрытый ключ.

  • Найдите местоположение ваших ключей. Обычно это должно быть что-то вроде каталога ~/.ssh.
  • Скопируйте пару ключей: Скопируйте пару ключей в нужное безопасное место с помощью команды cp:
cp ~/.ssh/id_rsa ~/.ssh/id_rsa_backup
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub_backup

Имена id_rsa и id_rsa.pub должны быть заменены на реальные имена ваших ключевых файлов, если они отличаются.

  • Теперь, когда пара открытый/закрытый ключ скопирована, ее следует хранить в надежном месте.

Кроме того, если местом хранения является другое устройство, необходимо изменить пользователя ключей на этом другом устройстве:

sudo chown new-user:new-user ~/.ssh/id_rsa*

После этого доступ к серверу можно будет получить и с другого устройства.

Восстановление пары ключей

Если вам необходимо восстановить пару ключей из резервной копии, созданной в соответствии с приведенными выше инструкциями, выполните следующие действия:

  • Скопируйте файлы резервной копии: Скопируйте файлы резервной копии пары ключей в каталог ~/.ssh:
cp ~/.ssh/id_rsa_backup ~/.ssh/id_rsa
cp ~/.ssh/id_rsa.pub_backup ~/.ssh/id_rsa.pub
  • Установите соответствующие разрешения: Убедитесь, что разрешения на эти файлы безопасны:
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
  • Проверьте пару ключей: Теперь, чтобы проверить, все ли работает, протестируйте пару ключей, подключившись по SSH к вашему серверу
ssh your_username@remote_server

Если ваш сервер защищен парольной фразой, вам будет предложено ввести ее.

Повышение безопасности за счет хранения парольных фраз в SSH-агенте

При использовании Linux-компьютера, работающего только с командной строкой, вам придется вводить ключевую фразу каждый раз, когда вы получаете доступ к другому Linux-устройству через SSH. Чтобы решить эту проблему, необходимо сохранить ключевую фразу в агенте SSH. Для этого:

  • Установите keychain:
sudo apt install keychain
  • Внесите изменения в файл .bash_profile или .profile для автоматизации выполнения команд:
/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh
  • При повторном входе в систему вы получите результат, аналогичный этому:

Last login: Sun Aug 12 15:20:07 2020 from 203.45.67.89

  • keychain 2.7.1 ~ http://www.funtoo.org
  • Found existing ssh-agent: 17892
  • Adding 1 ssh key(s): /home/johndoe/.ssh/id_rsa

Enter passphrase for /home/johndoe/.ssh/id_rsa:

  • ssh-add: Identities added: /home/johndoe/.ssh/id_rsa

Теперь, когда связка ключей настроена и пара ключей сохранена, вам не нужно будет каждый раз вводить ключевую фразу при SSH-соединении с сервером.

Изменение парольной фразы закрытого ключа

Если со временем вам захочется изменить ключевую фразу закрытого ключа, можно воспользоваться следующей командой:

ssh-keygen -f ~/.ssh/id_rsa -p
# Как сделать Поделиться:
Статьи по Теме