Настройка беспарольного подключения по SSH

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

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

Первым шагом является создание пары SSH-ключей на вашей локальной машине.

  1. Откройте терминал на вашей локальной машине.

  2. Введите команду:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    • -t rsa — указывает тип ключа (RSA).

    • -b 4096 — задает длину ключа в битах (4096 бит).

    • -C "your_email@example.com" — комментарий для ключа (необязательно).

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

    Enter file in which to save the key (/home/username/.ssh/id_rsa):

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

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

    Enter passphrase (empty for no passphrase):

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

Теперь вам нужно скопировать публичный ключ на удаленный сервер. Это можно сделать с помощью команды ssh-copy-id:

  1. Выполните команду:

    ssh-copy-id username@remote_host
    • username — ваш логин на удаленном сервере.

    • remote_host — адрес удаленного сервера (например, 192.168.1.100 или example.com).

  2. Введите пароль от учетной записи на удаленном сервере.

Эта команда добавит ваш публичный ключ в файл ~/.ssh/authorized_keys на удаленном сервере, что позволит вам подключаться к нему без пароля.

Ручное копирование ключа (если ssh-copy-id недоступен)

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

  1. На вашей локальной машине выполните:

    cat ~/.ssh/id_rsa.pub

    Это выведет содержимое публичного ключа.

  2. Скопируйте этот ключ.

  3. На удаленном сервере выполните:

    ssh username@remote_host
  4. Создайте директорию .ssh (если её нет) и установите нужные права:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
  5. Добавьте ваш публичный ключ в файл ~/.ssh/authorized_keys:

    echo "your_public_key" >> ~/.ssh/authorized_keys

    Вместо "your_public_key" вставьте ключ, который вы скопировали на первом шаге.

  6. Установите нужные права:

    chmod 600 ~/.ssh/authorized_keys

Проверка подключения

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

ssh username@remote_host

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

Дополнительные настройки безопасности

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

Чтобы повысить безопасность, можно отключить возможность входа по паролю на сервере и оставить только вход по SSH-ключам.

  1. Откройте файл конфигурации SSH на удаленном сервере:

    sudo nano /etc/ssh/sshd_config
  2. Найдите и измените/добавьте следующие параметры:

    PasswordAuthentication no
    PermitRootLogin no
  3. Перезапустите SSH-сервис для применения изменений:

    sudo systemctl restart ssh

Теперь вход на сервер возможен только с использованием SSH-ключей.

Last updated