Не удается найти id_rsa.pub на сервере unix. Могу ли я регенерировать его? Id_sra (закрытый ключ) существует

Что я хочу сделать, так это скопировать ключ на другой хост.

ssh-copy-id -i ~/.ssh/id_rsa user@host

Я получаю сообщение об ошибке:

/usr/bin/ssh-copy-id: ОШИБКА: не удалось открыть файл идентификатора «[homedir].ssh/id_rsa.pub»:

Так что открытого ключа нет. Так где это? Я пытался использовать команду

sudo find / -name id_rsa.pub

но он нашел только тот, который я сгенерировал экспериментально в моем тестовом каталоге. Я попытался отправить экспериментальный файл из тестового каталога, но затем он продолжает бесконечно запрашивать перефразирование и не отправляет, когда я продолжаю вставлять.

Значит, что-то не так.

Я мог регенерировать, используя

ssh-keygen -t rsa

но затем он пытается использовать каталог ~./.ssh

и хочет перезаписать закрытый ключ id_rsa. Боюсь, что это может что-то тормозить.

Итак, как мне получить файл с открытым ключом?


person Dariux    schedule 17.10.2014    source источник
comment
Что плохого в том, что вы проголосовали против?   -  person Dariux    schedule 17.10.2014


Ответы (2)


Ключи RSA работают парами. Вы можете генерировать закрытый и открытый ключи ssh любое количество раз... это ничего не сломает. Он просто заменяет старый на вновь сгенерированный ключ. Для этого вам нужно всего лишь скопировать вновь сгенерированный открытый ключ id_rsa.pub в файл ~/.ssh/authorized_keys вашего удаленного компьютера, чтобы вы могли получить доступ к защищенной оболочке с использованием ключей rsa.

Поэтому создайте новые ключи rsa в каталоге .ssh вашего дома (ваши старые ключи заменяются новыми) и скопируйте в каталог .ssh удаленного хоста.

cd /home/<your_username>/.ssh
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub remote_username@host:~/.ssh/authorized_keys

тогда

ssh remote_username@host

Держите парольную фразу пустой при создании новых ключей, если только вы не хотите вводить парольную фразу каждый раз, когда пытаетесь установить ssh-соединение.

ПРИМЕЧАНИЕ. Вам необходимо добавить свой открытый ключ в файл author_keys в каталоге ~/.ssh удаленного хоста, если он уже существует и содержит открытые ключи других клиентов.

person sa77    schedule 17.10.2014
comment
Но тогда он уже как бы сломался. Если я не знаю удаленных машин или забыл скопировать только что сгенерированный ключ, значит, он сломан — удаленная машина не может подключиться к текущему серверу, верно? Текущая машина может управляться несколькими администраторами, поэтому такая ситуация вполне возможна. Даже если я использую одну и ту же фразу-пароль, она будет генерировать разные пары файлов? - person Dariux; 17.10.2014
comment
Или что, если я создам подпапку в .ssh для своих новых ключей? Тогда они работают как старые, так и новые, и поэтому не ломают удаленные машины, которые хотят подключиться со старым ключом? - person Dariux; 17.10.2014
comment
вам нужна пара (закрытый и открытый) ключей, сгенерированных одновременно, чтобы он работал. у вас есть закрытый ключ (id_rsa), но нет соответствующей открытой пары (id_rsa.pub). поэтому лучше сгенерировать новую пару, заменяющую старую, для машины, которую вы сейчас используете... и попробуйте установить ssh-соединение username_at_server@server_host_ip с сервером, который вы пытаетесь установить. если позволяет конфигурация сервера.. он предложит вам добавить свой ключ к его known_hosts - person sa77; 17.10.2014
comment
вы можете создать сколько угодно комбинаций ssh-ключей... но рекомендуется использовать одну для пользователя. всякий раз, когда вы нажимаете команду ssh-keygen, она генерирует новую пару даже для той же фразы-пароля - person sa77; 17.10.2014
comment
Хотя создание совершенно новой пары ключей — это один из способов решить проблему наличия закрытого ключа, но не открытого ключа, я думаю, что это создает ненужную нагрузку, связанную с необходимостью отправлять новый ключ .pub на все серверы, с которыми вы взаимодействуете через SSH. Итак, на мой взгляд, приведенный выше ответ не касается напрямую того, о чем спрашивает Darius.V. Он специально спросил: «Как мне получить файл с открытым ключом?» и есть веская причина сделать именно это (т. е. повторно сгенерировать файл открытого ключа). Ниже я дал ответ на его вопрос. - person inspirednz; 12.08.2016

На всякий случай, если кто-то еще придет сюда в поисках ответа на вопрос ОП... и чтобы напрямую ответить на этот вопрос (а именно, как вы можете повторно сгенерировать ключ .pub в ситуации, когда он отсутствует, и у вас есть только закрытый ключ)...

Вот ответ:

Восстановление ключа .pub из закрытого ключа

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

Опция -y — это команда, предписывающая ssh-keygen вывести ваш открытый ключ.

Это повторно сгенерирует часть .pub пары. Как указал OP, если вы просто создадите новую пару и замените старый закрытый ключ, вы потеряете доступ к любым серверам, которым вы уже предоставили свой открытый ключ. Конечно, вы можете пройти через процесс предоставления нового открытого ключа на эти серверы, но зачем проходить эти хлопоты, если их можно легко избежать?

person inspirednz    schedule 12.08.2016
comment
Должно быть, это был принятый ответ. Открытый ключ, возможно, уже был распределен по ряду серверов и репозиториев. - person aiodintsov; 20.12.2018
comment
Я подозреваю, что ОП покинул корабль по этому поводу, потому что да, AFAIK, это должен быть принятый ответ ... на основе голосов, которые он получил, и по причине, которую вы указали. Хорошего дня. - person inspirednz; 21.12.2018