jenkins.plugins.publish_over.BapPublisherException:无法连接和初始化 SSH 连接消息 [Auth 失败]

Posted

技术标签:

【中文标题】jenkins.plugins.publish_over.BapPublisherException:无法连接和初始化 SSH 连接消息 [Auth 失败]【英文标题】:jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection Message [Auth fail] 【发布时间】:2021-03-08 23:12:00 【问题描述】:

我正在学习使用 Jenkins 在 AWS EC2 服务器上部署 .Net 5.0 应用程序。这是我第一次将 Linux 服务器和 Jenkins 用于 .Net(我是一个终生使用 Windows 的人),我在尝试通过 SSH 将我的工件发布到 Web 服务器时遇到了错误。

我的设置:

Jenkins 服务器是 AWS EC2 Linux AMI 服务器。 Web Server 也是 AWS EC2 LInux AMI 服务器。

我的 Jenkins 已正确安装并正常工作。我能够毫无问题地构建和运行单元测试用例。 对于部署,我使用的是“通过 SSH 发布”插件,并且我已按照此处https://plugins.jenkins.io/publish-over-ssh/ 中提到的所有步骤配置此插件。

但是,当尝试“测试配置”时,我收到以下错误,

连接或更改目录失败

jenkins.plugins.publish_over.BapPublisherException:无法连接和初始化 SSH 连接。消息:[无法连接配置 [WebServer] 的会话。消息[验证失败]]

我做了一个从 Jenkins 服务器到 Web 服务器的 ping 测试,它是成功的。 我在“通过 SSH 发布”的“密钥”部分使用 .pem 密钥。此密钥与我用于通过 SSH 连接到 Web 服务器的密钥相同。

以下链接建议了许多不同的解决方案,但在我的情况下没有一个有效。

Jenkins Publish over ssh authentification failed with private key

我正在查看描述相同问题的以下链接,

Jenkins publish over SSH failed to change to remote directory

但是,就我而言,我将“远程目录”保留为空。我不知道我是否必须在这里指定任何目录。无论如何,我尝试在用户 ec2-user 的主目录下创建一个新目录作为“/home/ec2-user/publish”,然后将此路径用作远程目录,但它仍然不起作用。

我在 Jenkins 中的设置屏幕截图:

如果有人能指出我正确的方向或突出我在配置中犯的任何错误,我将不胜感激。

【问题讨论】:

【参考方案1】:

您可以考虑以下几点:

一个。从您提供的屏幕截图中,您似乎已经检查了Use password authentication, or use different key option,这将要求您添加您的密钥和密码(来自这些字段的输入将用于通过 SSH 连接连接到您的服务器)。如果您在所有服务器上使用相同的 SSH 密钥和密码/密码,则可以取消选中/取消选中该框并使用您在上面指定的配置。

b.您还可以检查您的 Web 服务器的 port 22 是否允许来自运行 Jenkins 服务器/EC2 实例的安全组的入站流量。请参阅参考资料here。

c。另外,请确保您指定的远程目录存在,否则连接可能会失败。

这是示例配置

【讨论】:

以上是关于jenkins.plugins.publish_over.BapPublisherException:无法连接和初始化 SSH 连接消息 [Auth 失败]的主要内容,如果未能解决你的问题,请参考以下文章