Jenkins Publish over ssh 身份验证失败,使用私钥
Posted
技术标签:
【中文标题】Jenkins Publish over ssh 身份验证失败,使用私钥【英文标题】:Jenkins Publish over ssh authentification failed with private key 【发布时间】:2014-04-16 05:32:51 【问题描述】:我可以使用我的private key
和密码在服务器上通过putty
成功进行身份验证。但是,当我尝试使用 jenkins publish over SSH 插件(使用测试进行配置)时,我收到以下错误消息:
jenkins.plugins.publish_over.BapPublisherException: Failed to connect session for config myconfig. Message [Auth fail]
我输入了和putty一样的信息:
主机名:我的主机名用户名:我的用户名远程目录:使用密码身份验证,或使用不同的密钥 Passphrase / Password 密钥路径:选中 密钥路径:mypath 密码:mypasssword 密钥:端口:22超时(毫秒):300000
如果你有任何想法... 感谢您的帮助。
【问题讨论】:
Jenkins 插件指南指出,检查选项“使用密码身份验证,或使用不同的密钥密码短语/密钥的密码路径”使另外三个字段能够为“密钥路径”提供详细信息, “key”和“Passphrase”……我在上面的信息中没有看到密码,你在那个框中也提供了密码吗? 在下面的答案中添加了更多详细信息 对不起,我也输入了密码,但我在我的问题中忘记了它。事实上,我输入的信息与 putty 中的信息完全相同。我真的不明白这个问题! 我遇到了同样的问题... 我还没有找到分辨率:-( 【参考方案1】:看起来您正在使用密钥文件身份验证,因此如果您没有在 .ssh
文件夹和/或 ~/.ssh/authorized_keys
文件上正确设置权限,您将从 Jenkins 收到此错误。
.ssh
文件夹应具有drwx------
权限(仅限读/写/执行所有者)
authorized_keys
文件应具有-rw-------
权限(仅限读/写所有者)
修复它:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
【讨论】:
我遇到了这个错误jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [deploy-server]. Message [Auth fail]]
还有什么我需要注意的吗?我在部署服务器中有 jenkins 用户,我可以通过 putty ssh
使用它。
在我的系统中,权限是正确的,但问题仍然存在。我使用私钥进行身份验证,这解决了它:cat id_rsa.pub >> authorized_keys
【参考方案2】:
我今天遇到了同样的问题,结果发现我不小心提供了公钥而不是私钥的路径。
所以“钥匙的路径”应该是这样的
.ssh/id_rsa
而不是
.ssh/id_rsa.pub
【讨论】:
啊啊啊,同样的错误。谢谢! @Rinda 你在哪里提供这个,这个答案今天仍然有效吗? 如果我使用的是 jenkins docker 镜像,我如何知道私钥的路径?【参考方案3】:因为你的linux登录需要密码,所以答案是:
1. Passphrase: your passphrase
2. path to key: your private key path
3. key : blank
4. Disable exec : un-check
SSH 服务器
1. Name: remote_user@remotehost.com
2. hostname: remotehost.com
3. Username: remote_user
4. Remote Directory: empty
高级 --
5. check the box "use passsword authentication, or use a different key"
`important`
6. Passphrase / Password: your linux login password`important`
7. path to key: blank
8. key:blank
9. port: 22
10. Timeout(ms): 300000
'测试配置' 成功
【讨论】:
非常感谢。这对我帮助很大。【参考方案4】:检查公钥是否在目标服务器上的.ssh/authorized_keys
文件中,即使目标服务器与jenkins服务器相同。我可能遇到了同样的问题,结果证明我需要这个,即使 ssh localhost
工作正常。
(附录:还要检查 jenkins 服务器的 .ssh/known_hosts
文件中是否有目标服务器,因为这也会影响这一点。)
【讨论】:
.ssh/known_hosts
在我的情况下创建了问题。从known_host
中删除指纹解决了这个问题【参考方案5】:
我认为这是一个身份验证问题:
使用密码验证,或使用不同的密钥 选择此选项将生成另外 3 个配置框,这些配置框反映了 Jenkins SSH 密钥可用的选项。
密码/密码 如果配置了密钥路径或密钥,则这是与加密密钥一起使用的密码。 如果没有配置密钥,那么这就是将用于密码验证的密码。
键的路径 见上面的描述。
键 见上面的描述。
禁用执行 此选项将删除使用此配置执行命令的能力。
LINK HERE
【讨论】:
感谢您的回答,但我确实提供了与 putty 完全相同的信息,但它在 jenkins 中不起作用【参考方案6】:我面临同样的问题,以下步骤对我有用:-(我使用的是 jenkins 1.57)
-
转到 http:///jenkins/manage
-
配置系统
浏览到通过 SSH 发布部分
密码:空白
密钥路径:空白
键:空白
禁用 exec:取消选中
SSH 服务器
-- 名称:remote_user@remotehost.com
-- 主机名:remotehost.com
-- 用户名:remote_user
-- 远程目录:空
- 先进的
-- 勾选“使用密码验证,或使用不同的密钥”
-- 端口:22
-- 超时(毫秒):300000
-- '测试配置'
成功
【讨论】:
【参考方案7】:尝试重启远程服务器的ssh
/etc/init.d/sshd restart
【讨论】:
【参考方案8】:不要做任何 ssh-keygen。只需在关键字段下输入 pem 密钥详细信息, 添加 SSH 服务器详细信息:名称、主机名和用户名作为 ec2-user。 点击测试连接即可。
【讨论】:
【参考方案9】:如果目标服务器没有足够的磁盘空间来执行 PUT 操作,有时 SSH 连接会失败
ERROR: Exception when publishing, exception message [Failure]
确保验证目标服务器有足够的磁盘空间。
如果是 Linux,您可以使用 'df -kh /directoryname' 检查磁盘空间
【讨论】:
【参考方案10】:只需将 jenkins-user 的 id_rsa.pub 复制到远程主机上 ~/.ssh/authorized_keys 的末尾即可。
【讨论】:
【参考方案11】:我今天遇到了同样的问题,我想我会分享对我有用的方法
通常当我通过 SSH 连接到我的 ec2 实例时,AWS 喜欢的用户名是
ubuntu@[ip address/url]
Jenkins 喜欢它只是用户名,所以删除其余的
ubuntu
【讨论】:
以上是关于Jenkins Publish over ssh 身份验证失败,使用私钥的主要内容,如果未能解决你的问题,请参考以下文章