TGViewer
Системный администратор Системный администратор @i_linux · 1.95K subscribers
Post #1147 492
Простое копирование ssh ключей между серверами c использованием утилиты ssh-copy-id

Традиционно администраторы решают задачу копирования ssh ключей между серверами путем копирования содержимого файла /root/.ssh/id_rsa.pub с сервера server1 на server2 в файл /root/.ssh/authorized_keys. Копируют обычно из одного терминала в другой, но есть более изящное решение — это использование утилиты ssh-copy-id, которая позволяет скопировать содержимое id_rsa.pub сервера источник (в нашем случае server1) на сервер приемник (server2) в нужный нам authorized_keys не открывая консоль сервера приемника (server2).

Исходные данные: 2 сервера с Debian (server1 и server2).
Задача: Организовать вход по ssh ключу с сервера server1 на server2 с правами root.

Итак сделаем все по порядку:

1. Генерируем публичный открытый и закрытый ключи, под пользователем root на server1:
ssh-keygen -t rsa

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

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <-- ENTER
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <-- ENTER
Enter same passphrase again: <-- ENTER
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.


Вы можете защитить приватный ключ паролем и тогда чтобы попасть на сервер server2 по ssh ключу нужно будет ввести этот пароль, я настоятельно рекомендую для доступа с уровнем root ввести пароль на приватный ключ.
Ключи сгенерированы, мы можем проверить под пользователем root выполнив команду
cat ~/.ssh/id_rsa.pub

В ответ увидим примерно:
ssh-rsa AAAAB3Nz.....ywWmpl root@server1

Теперь нужно передать публичный ключ id_rsa.pub пользователя root на server2, для этого на server1 выполняем:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@server2

Вводим пароль root от сервера server2 и ключ будет передан и записан в нужный файл authorized_keys

Важное уточнение: Чтобы передать публичный ключ на server2 под root нужно чтобы пользователю root было разрешен вход по ssh на server2, обычно при базовой установке Debian/Ubuntu вход под root по ssh разрешен, это настраивается директивой PermitRootLogin в файле /etc/ssh/sshd_config

PermitRootLogin yes — Вход под root по ssh разрешен.

PermitRootLogin no — Вход под root по ssh запрещен.

PermitRootLogin without-password — Вход под root по ssh разрешен только по ssh ключам.

PermitRootLogin forced-commands-only — Вход под root по ssh разрешен только по ssh ключам и только для выполнения заранее определенной команды, сама команда прописывается в /root/.ssh/authorized_keys в формате:

command="rsync" ssh-rsa AAAAB3N……. root@server2

После изменения PermitRootLogin не забудьте перезапустить службу sshd командой:

service sshd restart

👉@i_linux
  • 👍 2
  • ❤ 1
  • 🔥 1
More from @i_linux
  1. Sep 11, 2026Горячие клавиши VirtualBox Основные ярлыки в VirtualBox F1: Отображает справку. Ctrl + D М…
  2. Sep 8, 2026Увеличение времени сессии SSH Бывает, что выполнение удаленно запущенной команды может зат…
  3. Sep 1, 2026Регулярные выражение для поиска IP адресов Ниже представлены регулярные выражения, которые…
  4. Aug 26, 2026Старое доброе видео, кто помнит? Веселенький денек у сисадмина... Системный администратор…
  5. Aug 17, 2026ChopChopGo Это инструмент для просмотра журналов Linux наподобие chainsaw и Hayabusa, отли…
  6. Aug 8, 2026До / После 📲 Мы в MAX 👉@i_linux
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →