如何将 ssh-keyscan 结果与端口保存到 .ssh/known_hosts

如何将 ssh-keyscan 结果与端口保存到 .ssh/known_hosts

当我跑步时

ssh-keyscan -p NNN -t rsa GITHOST

它会产生刺痛感

GITHOST ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCZwBe6yneM2q2KEuQ3UV194hUcEcQ7b0xoYdKXKU6RrsxP2wup3uwC4q2SbPlW6XkjVtOIXY4c5aBaieMjNhIBFxGa2yUnTwZPFZiGMh/fwoZ2IsLsIE7XCj2q4eO1jmxvgWf7VAE7DVkGg5VTcRRoVOP5V15z9/saP5u4Tcwu1w==

然后我将其添加到~/.ssh/known_hosts文件中。

但是 git 仍然询问我密钥验证问题。可能是因为文件中没有存储端口信息吗known_hosts

如何known_hosts在脚本中创建正确的内容?

答案1

这通常不需要,因为当前的 ssh-keyscan 版本会为您添加端口。旧版本没有这样做。您可以像这样使用 sed 对该行进行后处理:

ssh-keyscan -p NNN -t rsa GITHOST | sed -E 's/^([^ \[]+) (.*)$/[\1]:NNN \2/'

ssh-keyscan 的输出通过管道传输到 sed,sed 将使用替代正则表达式转换 ssh-keyscan 的输出以包含端口。

这将导致:

[GITHOST]:NNN ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCZw....

更新:我改进了上面的正则表达式,使其能够以正确的格式与 ssh-keyscan 输出完美兼容。

相关内容