Традиционно администраторы решают задачу копирования 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 8 (server1 и server2).
Задача: Организовать вход по ssh ключу с сервера server1 (источник) на server2 (приемник) с правами root.
Итак сделаем все по порядку:
1. На server1 генерируем публичный открытый и закрытый RSA-ключи. Делаем это под пользователем root:
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
2. Теперь нужно передать публичный ключ 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
3. Теперь Вы можете зайти c server1 на serve2 под root без пароля, проверяем находясь под root на server1:
ssh root@server2
На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Профессионально занимаюсь системным администрированием Linux -серверов и баз данных (MySQL, PostgreSQL) на протяжении последних 24 лет.
Михаил, можете рассказать о подключении к серверу с android с помощью termux и openssh. На компе все сделал с первого раза и без проблем подключаюсь и к серверу и к телефону, а с телефона не удается((
Попробуйте приложение ConnectBot. У меня с ним все заработало
Здравствуйте! Мне нужно отправить ключ через джимэйл к своему преподавателю. Но копировать и вставить не получается. Поможете?!
Здравствуйте, Фариза! Постараюсь вам помочь, опишите вашу проблему подробнее
Здравствуйте, подскажите, у меня сервер Proxmox, он основан на дебиан 12.
Делаю по вашей инструкции, все этапы на клиентепроходят без ошибок, на сервере в папке /root/.ssh ключи добавляются в файл autorized_key, но при входе на удаленный компьютер снова просит пароль.
Если удалить файл autorized_key на удаленной машине, то доступ по ключу срабатывает, но до первой перезагрузки.
Добрый день, я не совсем понял кто у вас клиент, а кто сервер. Откуда и куда вы хотите сделать доступ по ssh ключу?
Напишите пожалуйста мне в телеграм cherts, попробуем разобраться.
Что-то у вас сайт временами не доступен.
Подключаюсь с рабочей станции(убунту) к гипервизору прокмокс(надстройка на дебиаант12). Клиент рабочая машина, сервер-гипервизор.
Доступ хочу получить с рабочей машины к гипервизору.
После этого файл autorized_key становится ссылочным и исходник лежит в папке /etc/pve/priv/authorized_keys. Единственное упоминание в документации на проксмокс про ssh есть в п 5.9, ноо там говорится тлько о том, что этот файл аккумулирует все ключи для виртуальных машин. А я же пытаюсь зайти на сам гипервизор.
Не сталкивались ли Вы с такой проблемой?