Jenkins 无法使用私钥连接到 EC2,但我可以使用 Putty 连接

Jenkins cannot connect to EC2 using private key, but I can connect using Putty

我最近在 AWS EC2 服务器上继承了一个 Jenkins 实例 运行。它有几个通往不同 EC2 服务器的管道 运行 成功。我在向新的 EC2 Web 服务器添加新节点时遇到问题。

我在名为 jenkins 的新 Web 服务器上有一个帐户。我生成了密钥,将 ssh-rsa 密钥添加到 ~/.ssh/authorized_keys,并验证了我能够通过 Putty 连接到 jenkins 用户。

在 Jenkins 中,在 Dashboard > Credentials > System > Global Credentials 下,我创建了如下新凭证:

  1. 用户名:jenkins
  2. 私钥 -> 直接输入密钥:粘贴在以“BEGIN RSA PRIVATE KEY”开头的密钥中:

最后,我使用这些凭据创建了一个新节点,通过 SSH 连接并使用“已知主机文件验证策略”。

不幸的是,当我尝试启动代理时出现以下错误:

[01/04/22 22:16:43] [SSH] WARNING: No entry currently exists in the Known Hosts file for this host. Connections will be denied until this new host and its associated key is added to the Known Hosts file. Key exchange was not finished, connection is closed.

我确认我的节点中配置了正确的主机名。 我不知道我在这里错过了什么,特别是因为我可以通过 Putty 连接。

有什么建议吗?

您是否将新节点添加到控制器节点上的已知主机文件中? 我假设 Putty 是您的本地机器而不是控制器?

有关详细信息,请参阅此支持文章 https://support.cloudbees.com/hc/en-us/articles/115000073552-Host-Key-Verification-for-SSH-Agents#knowhostsfileverificationstrategy

听起来您的系统不允许自动将主机密钥输入 known_hosts 文件。您可以在您的用户、系统或可能运行 Jenkins 的任何用户、SSH 配置文件中检查 UpdateHostKeys 标志。您可以阅读更多关于我正在谈论的特定标志 here

如果您需要手动添加该主机密钥,here's写一篇关于如何操作的好文章。