Настройка SSH аутентификации на Linux

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

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

Что такое SSH-ключи

Пара SSH-ключей состоит из:

  • Приватного ключа (id_rsa или с другим именем), хранится локально и защищён паролем или без него.

  • Публичного ключа (id_rsa.pub) - загружается на сервер и добавляется в файл ~/.ssh/authorized_keys.

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

Генерация SSH-ключей

На вашей локальной машине запустите команду:

ssh-keygen

Вы увидите такой вывод:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):

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

После завершения увидите примерно такой результат:

Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:CAjsV9M... username@hostname
The key's randomart image is:
+---[RSA 3072]----+
|                |
|         .       |
...
+----[SHA256]-----+

Теперь у вас есть пара ключей: приватный (id_rsa) и публичный (id_rsa.pub).

Копирование публичного ключа на сервер

Способ 1. ssh-copy-id

Если на вашей системе есть утилита ssh-copy-id (часто устанавливается вместе с OpenSSH), используйте её:

ssh-copy-id username@server_ip

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

Пример вывода:

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
Are you sure you want to continue connecting (yes/no)? yes
username@203.0.113.1's password:
Number of key(s) added: 1

Способ 2. Через обычный SSH и cat

Если ssh-copy-id недоступен, можно вручную отправить ключ через SSH:

cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Это создаст директорию ~/.ssh на сервере (если её нет) и добавит ваш ключ в файл authorized_keys.

Способ 3. Вручную через веб-терминал

Если у вас нет пароля или утилит, вы можете открыть id_rsa.pub локально (cat ~/.ssh/id_rsa.pub), скопировать его содержимое и вставить в файл ~/.ssh/authorized_keys на сервере через веб-консоль или другой доступ.

Подключение к серверу с SSH-ключом

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

ssh username@server_ip

При первом подключении система может спросить подтверждение ключа хоста. Введите yes и нажмите Enter. Если приватный ключ защищён паролем, его нужно будет ввести сейчас.

Отключение входа по паролю

Чтобы полностью перейти на SSH-ключи и исключить парольные логины, отключите вход по паролю на сервере. Подключитесь к серверу (по SSH-ключу) и отредактируйте файл конфигурации SSH:

sudo nano /etc/ssh/sshd_config

Найдите директиву PasswordAuthentication, раскомментируйте её и установите:

PasswordAuthentication no

Сохраните файл и перезапустите SSH-демон:

sudo systemctl restart ssh

Теперь сервер принимает только ключевую аутентификацию.

Советы по безопасности

  • Храните приватный ключ (id_rsa) в защищённом месте.

  • Не делитесь приватным ключом и не отправляйте его по сети.

  • Используйте фразовый пароль для ключа. Это защитит его, если кто-то получит доступ к вашей машине.

  • Можно использовать SSH-агент (ssh-agent), чтобы не вводить фразу-пароль каждый раз.

Комментарии (0)

Войдите, чтобы оставить комментарий

Похожие статьи

PHP Generators

Статья рассказывает о PHP генераторах - что это, как они работают, зачем нужны и как использовать их в реальных проектах. Примеры включают чтение больших CSV и потоковую обработку данных.

43 0 2 мин

NativePHP для мобильных приложений стал полностью бесплатным

NativePHP for Mobile с версии v3 стал полностью бесплатным и открытым, с переходом на плагинную архитектуру, новым инструментом Jump для тестирования и другими нововведениями для разработчиков на Laravel.

23 0 1 мин