当我跑步时
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 输出完美兼容。