很抱歉不得不提出这个问题,但我感觉在SO上已经尝试了每一个答案,但都没有成功。
我的本地机器和远程服务器。 Jenkins正在我的服务器上运行。
如果我打开终端并执行类似于scp /path/to/file user@server:/path/to/wherever
的操作,则我的ssh可以正常工作而无需密码
如果我在Jenkins工作中运行此命令,则会显示“主机密钥验证失败
”
所以我知道我的SSH按照我想要的方式正确工作,但为什么我不能让Jenkins使用这个SSH密钥呢?
有趣的是,当我第一次设置Jenkins和密钥时,它确实可以正常工作,然后我认为我重新启动了本地计算机或重新启动了Jenkins,然后它就停止工作了。很难说确切的原因。
我还尝试了几个关于ssh-agent和ssh-add的选项,但这些选项似乎不起作用。
我验证了本地机器的.pub文件位于/user/.ssh文件夹中,并且也在授权密钥文件中。该文件夹由用户拥有。
非常感谢任何想法,我可以提供有关我的问题的更多信息。谢谢!
更新:
根据Kensters的建议,我执行了su-jenkins
,然后执行了ssh server
,它要求我添加到已知主机。所以我认为这是朝着正确方向迈出的一步。但之后仍然存在同样的问题。
我之前没有注意到的是,当使用myUsername
帐户时,可以无需密码连接ssh server
。但是,如果我切换到jenkins
用户,则在执行ssh server
时会要求我输入密码。
我还尝试了建议的ssh-keygen -R server
,但无济于事。
ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
命令。只要我使用该命令设置了 known_hosts 文件,Terraform init 就能够成功执行。 - jhnclvr