banner

Аутентификация на linux сервере по ssh с помощью ключей.

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

   В этой инструкции предполагается, что у вас есть два сервера под управлением Debian (или любого дистрибутива на основе Debian). Обозначим их:

**Сервер A** – с которого будет инициироваться подключение (клиент). **Сервер Б** – к которому будет выполняться подключение (сервер).

  1. Создание пары SSH-ключей на сервере A.

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

ssh-keygen -t ed25519 -C "comment"

-t ed25519 – задаёт тип ключа. Рекомендуется использовать ed25519 (современный и безопасный). Можно также rsa с длиной 4096 бит (-t rsa -b 4096). -C "comment" – комментарий, который поможет идентифицировать ключ (например, "key-for-serverB").

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

(~/.ssh/id_ed25519).

При запросе парольной фразы (passphrase) вы можете либо задать её (тогда при каждом использовании ключа её нужно будет вводить, но можно использовать ssh-agent для кэширования), либо оставить пустой для автоматического входа без пароля. После выполнения в каталоге ~/.ssh появятся два файла:

 id_ed25519 – приватный ключ (никому не передавать!)

 id_ed25519.pub – публичный ключ (его нужно скопировать на сервер Б).

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

  Способ 1: с помощью утилиты ssh-copy-id.

Если на сервере Б уже настроен доступ по паролю, проще всего воспользоваться ssh-copy-id:

ssh-copy-id user@serverB

Где user – имя пользователя на сервере Б, а serverB – его адрес (IP или доменное имя). Утилита запросит пароль пользователя на сервере Б, после чего добавит публичный ключ в файл ~/.ssh/authorized_keys.

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

  • 1. На сервере A выведите содержимое публичного ключа:

    cat ~/.ssh/id_ed25519.pub

  • 2. Скопируйте вывод в буфер обмена.
  • 3.На сервере Б выполните:

    mkdir -p ~/.ssh

    echo "скопированная_строка_ключа" >> ~/.ssh/authorized_keys

    chmod 700 ~/.ssh

    chmod 600 ~/.ssh/authorized_keys

  3. Настройка прав доступа на сервере Б SSH-демон требует строгих прав на каталог .ssh и файл authorized_keys. Убедитесь, что они установлены корректно:

chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

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

chown -R user:user ~/.ssh

 4. Проверка конфигурации SSH-сервера (сервер Б) В файле /etc/ssh/sshd_config должны быть включены следующие опции (обычно они уже заданы по умолчанию):

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

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

sudo systemctl restart ssh

  5. Проверка подключения с сервера A Теперь попробуйте подключиться с сервера A к серверу Б:

ssh user@serverB

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

ssh -vvv user@serverB

Это поможет увидеть, на каком этапе возникает проблема (например, неправильные права на authorized_keys).

  6. (Опционально) Отключение парольной аутентификации на сервере Б Если вы уверены, что ключевая аутентификация работает, для повышения безопасности можно запретить вход по паролю. Для этого в файле /etc/ssh/sshd_config измените или добавьте:

PasswordAuthentication no

ChallengeResponseAuthentication no

После этого перезапустите SSH:

sudo systemctl restart ssh

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

  7. Дополнительные рекомендации Использование одного ключа для нескольких серверов Вы можете скопировать один и тот же публичный ключ на любое количество серверов. Это удобно, если вы управляете множеством машин. SSH-агент Если вы задали парольную фразу для приватного ключа, можно добавить ключ в ssh-agent, чтобы не вводить пароль каждый раз:

eval $(ssh-agent) ssh-add ~/.ssh/id_ed25519

Защита приватного ключа Никогда не передавайте приватный ключ третьим лицам. Убедитесь, что права на него на сервере A – 600:

chmod 600 ~/.ssh/id_ed25519

Использование файла конфигурации SSH Для удобства можно создать файл ~/.ssh/config и описать в нём параметры подключения:

Host serverB

HostName 192.168.1.10

User user

IdentityFile ~/.ssh/id_ed25519

После этого подключение будет выполняться командой ssh serverB.

  Заключение.

  Вы настроили аутентификацию по SSH-ключам между двумя Debian-серверами. Теперь вы можете выполнять автоматизированные задачи (например, rsync, scp, Ansible) без ввода пароля, сохраняя высокий уровень безопасности.

Через тернии к звёздам... [2025 - ∞ by V@ri@g]