У меня есть пара ключей ssh, созданная для использования в качестве ключа доступа для моего сервера GoCD CI / CD. Он работал, но из-за некоторых изменений конфигурации, которые я сделал (переместил сервер из контейнера на хост Linux), мне нужно было переустановить ключи на хосте Linux, что я и сделал. Я уже сгенерировал пару и вместо того, чтобы менять открытый ключ на Bitbucket, я решил, что будет проще продолжать использовать ту же пару (также у меня есть несколько агентов CI / CD, работающих в контейнерах, которые в настоящее время используют эту пару ключей).
Итак, вот где начинается моя проблема. Я перемещаю свой предварительно сгенерированный закрытый ключ (gocd
) из моего промежуточного каталога в go
домашний адрес пользователя (/var/go/
):
[ip-10-71-10-66 docker]# cp ./gocd ~go/.ssh/id_rsa
[root@ip-10-71-10-66 docker]# diff gocd ~go/.ssh/id_rsa
[root@ip-10-71-10-66 docker]#
Пока все хорошо, id_rsa
файл и gocd
файл кажется таким же. Однако, когда я сравниваю открытые ключи ...
[root@ip-10-71-10-66 docker]# ssh-keygen -y -e -f ~go/.ssh/id_rsa && ssh-keygen -y -e -f gocd
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, converted by root@ip-10-71-10-66 from OpenSSH"
TEXT REMOVED
GsH8pAPy3iQI54HvSZn9qNtA19pL+8r/DlFb6X4qeTyvte0iEIqAYmuSJglcf6OlTx0FxR
HK9y3iyG01zdcBdr2+O06j
---- END SSH2 PUBLIC KEY ----
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, converted by root@ip-10-71-10-66 from OpenSSH"
TEXT REMOVED
bse2UtKDtTbN1EbUZ7XxLOeVG6j6CDokLagJ9LOxdLW0Zb4aMnm/sg1x5VcAY6rQKFEnSl
F3z68VhKCw0ZOqVBNg8SGz
---- END SSH2 PUBLIC KEY ----
Надеюсь, из этого примера вы поймете, почему я запутался. Что действительно странно, так это то, что открытый ключ из файла id_rsa (первый вывод последней команды) фактически соответствует более раннему закрытому ключу, который я создал.
Что здесь происходит? Происходит ли кеширование в ssh-agent
что я не в курсе? Что-то еще происходит?
Ответ на этот вопрос удручающе прост. Видимо, при наличии id_rsa
и id_rsa.pub
пара, команда ssh-keygen, которая оценивает закрытый ключ и выводит связанный открытый ключ, будет игнорировать содержимое id_rsa
файл и предположим, что связанный id_rsa.pub
файл совпадает.
Удаление несовпадающих id_rsa.pub
файл из ~go/.ssh/
каталог позволяет ssh-keygen правильно выводить связанный открытый ключ.