Настройка аутентификации по 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) без ввода пароля, сохраняя высокий уровень безопасности.