Поиск по сайту:

Как войти в удаленный сервер Ubuntu 20.04 с помощью SSH-ключа без пароля

Для тех, кто удаленно использует Ubuntu или другой сервер Linux (например, Debian, CentOS и Fedora), вот как войти в систему без пароля, используя аутентификацию по ключу SSH.

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

1. Включите службу SSH (сделайте это на стороне сервера):

Если вы не включили службу SSH на удаленном сервере. Вам необходимо сначала подключиться к серверу и запустить команду для установки openssh:

sudo apt install openssh-server

Для серверов CentOS и Fedora вместо этого используйте команду sudo dnf install openssh-server.

После установки включите и запустите службу командой:

sudo systemctl enable ssh && sudo systemctl start ssh

И, наконец, проверьте статус службы SSH, выполнив команду:

sudo system status ssh

Если вы видите, что служба активна и работает, вы можете начать удаленное подключение к серверу через SSH, используя приведенную ниже команду на локальном компьютере:

ssh user@server_ip

Замените user и server_ip. И используйте -p номер_порта, чтобы указать номер порта, если он не равен 22 по умолчанию.

2. Включите аутентификацию по ключу SSH (выполняйте команды на локальном ПК):

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

ПРИМЕЧАНИЕ. Это руководство протестировано на локальном компьютере с Ubuntu, хотя оно должно работать на большинстве Linux, включая Debian, Fedora, CentOS и Arch Linux.

1. Установите клиент OpenSSH:

Клиент OpenSSH в основном устанавливается «из коробки». Если у вас его нет, запустите эту команду на локальном компьютере, чтобы установить его:

sudo apt install openssh-client

Для CentOS и Fedora вместо этого используйте sudo dnf install openssh openssh-clients.

2. Создайте пару ключей SSH:

Команда ssh-keygen позволяет генерировать пару ключей SSH с помощью алгоритмов RSA, ECDSA и ED25519. Хотя RSA широко используется и лучше всего поддерживается, ED25519 обеспечивает лучшую безопасность и хорошую производительность.

а.) Сначала создайте каталог .ssh и перейдите в него в окне терминала локального компьютера:

mkdir -p ~/.ssh && cd ~/.ssh

б.) Затем выполните команду для генерации пары ключей:

ssh-keygen -t ed25519 -f linode_ed25519 -C "root@linode"

В коде вы можете заменить «ed25519» на предпочитаемый вами алгоритм шифрования. А «-f linode_ed25519» указывает имя ключа, «-C «root@linode»» является необязательным комментарием.

в.) По соображениям безопасности настоятельно рекомендуется не устанавливать разрешения (даже недоступные для чтения) другим пользователям, кроме вас самих:

chmod 600 ~/.ssh/linode_ed25519*

Измените «linode_ed25519» на имя ключа, которое вы установили на последнем шаге. В конце стоит звездочка «*», поэтому она также относится к файлу «linode_ed25519.pub».

3. Загрузите открытый ключ на хост-сервер (выполняйте на локальном ПК):

Теперь загрузите открытый ключ («linode_ed25519.pub» в моем случае) с локального компьютера на удаленный сервер, используя команду:

cd ~/.ssh && ssh-copy-id -i linode_ed25519.pub user@server_ip

Не забудьте добавить «-p номер», если порт прослушивания отличается от порта по умолчанию 22. И вам нужно ввести пароль удаленного пользователя для загрузки ключа.

После этого повторите попытку входа по SSH на локальном компьютере, будет запрошен ключевой пароль, который вы установили в пункте б.):

ssh user@server_ip

Если вы выберете «Отмена», вместо этого будет запрошена аутентификация пользователя по паролю.

4. Включите вход по ключу SSH без пароля (выполняйте на локальном ПК):

Вы можете установить флажок «Автоматически разблокировать этот ключ при каждом входе в систему» и ввести пароль только один раз на последнем снимке экрана. Однако некоторые среды рабочего стола могут не обеспечивать эту удобную функцию. Итак, «ssh-агент», агент аутентификации OpenSSH, выполняет всю работу за вас.

Сначала запустите «ssh-agent» с помощью команды оболочки:

eval 'ssh-agent'

Затем добавьте ключ SSH к агенту:

ssh-add linode_ed25519

После этого команда SSH войдет в систему без ввода пароля ключа аутентификации.

5. Отключите вход по паролю пользователя SSH (выполняйте на стороне сервера):

После успешной настройки аутентификации по ключу вы можете отключить вход по паролю пользователя, чтобы никто другой не смог получить доступ к серверу!

Сначала подключитесь к удаленному серверу и выполните команду для редактирования файла конфигурации демона ssh:

sudo nano /etc/ssh/sshd_config

Затем раскомментируйте строку «#PasswordAuthentication yes» и установите для нее значение «no», так что это будет:

Аутентификация по паролю: нет

Затем нажмите Ctrl+X, введите y и нажмите Enter, чтобы сохранить файл.

Наконец перезагрузите SSH через

sudo systemctl reload ssh

командуйте и наслаждайтесь!

Статьи по данной тематике