我正在使用 Jenkins EC2 Plugin 按需生成代理。在我的工作期间,我必须克隆其他存储库,所以我使用
sshagent
。但是我收到了 Host key verification failed
错误,所以我在克隆之前添加了: sh 'ssh-keygen -F github.company.com || ssh-keyscan -H -t rsa github.company.com >> ~/.ssh/known_hosts'
,这并不能解决我的问题。我对得到的输出感到非常困惑:
+ ssh-keygen -F github.company.com
2024-06-03 11:02:03.310 Cannot stat /home/ubuntu/.ssh/known_hosts: No such file or directory
2024-06-03 11:02:03.310 + ssh-keyscan -H -t rsa github.company.com
2024-06-03 11:02:03.310 /home/ubuntu/workspace/job-name@tmp/durable-b8889414/script.sh.copy: line 1: /home/ubuntu/workspace/job-name/.ssh/known_hosts: No such file or directory
看起来脚本尝试在主目录中查找
known_hosts
,但如果没有,则尝试添加到不同位置的known_hosts
。有人可以向我解释一下这种行为或者它应该是什么样子吗?
~
扩展由于某种原因而被破坏。尝试使用$HOME
代替,这样更可靠。
sh 'ssh-keygen -F github.company.com || ssh-keyscan -H -t rsa github.company.com >> $HOME/.ssh/known_hosts'
保留单引号,更改为双引号会过早扩展
$HOME
。