Когда я запускаю
ssh-keyscan -p NNN -t rsa GITHOST
, он производит жало вроде
GITHOST ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCZwBe6yneM2q2KEuQ3UV194hUcEcQ7b0xoYdKXKU6RrsxP2wup3uwC4q2SbPlW6XkjVtOIXY4c5aBaieMjNhIBFxGa2yUnTwZPFZiGMh/fwoZ2IsLsIE7XCj2q4eO1jmxvgWf7VAE7DVkGg5VTcRRoVOP5V15z9/saP5u4Tcwu1w==
И я добавляю его в файл ~ / .ssh / known_hosts
.
Но git все еще спрашивает меня о проверке ключа. Может быть, из-за того, что в файле known_hosts
нет информации о порте?
Как я могу создать правильные known_hosts
в сценарии?
Обычно в этом нет необходимости, так как текущие версии ssh-keyscan добавят порт за вас. Старые версии этого не делали. Вы можете обработать строку с помощью sed следующим образом:
ssh-keyscan -p NNN -t rsa GITHOST | sed -E 's/^([^ \[]+) (.*)$/[\1]:NNN \2/'
Вывод ssh-keyscan передается в sed, который будет использовать заменяющее регулярное выражение для преобразования вывода ssh-keyscan для включения порта.
Это приведет к следующему:
[GITHOST]:NNN ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCZw....
Обновление: я усовершенствовал приведенное выше регулярное выражение, чтобы оно хорошо работало с выводом ssh-keyscan в уже правильном формате.