Jenkins SSH节点连接失败:服务器拒绝私钥认证求助
Jenkins SSH节点公钥认证失败问题
已配置节点信息
启动方式:通过SSH启动代理(Launch agents via SSH) 主机:host 凭据:通过指定用户名和私钥新增的凭据 主机密钥验证策略:不验证(选择其他值时错误无变化)
连接时出现的错误
[08/24/22 14:39:14] [SSH] 正在打开到host:22的SSH连接。 [08/24/22 14:39:14] [SSH] 警告:未验证SSH主机密钥,此连接可能遭受中间人攻击。 ERROR: 服务器拒绝了cred_name的1个私钥(credentialId:cred_name/method:publickey) ERROR: 无法以cred_name身份通过凭据cred_name完成认证 java.io.IOException: 公钥认证失败。 at com.trilead.ssh2.auth.AuthenticationManager.authenticatePublicKey(AuthenticationManager.java:349) at com.trilead.ssh2.Connection.authenticateWithPublicKey(Connection.java:472) at com.cloudbees.jenkins.plugins.sshcredentials.impl.TrileadSSHPublicKeyAuthenticator.doAuthenticate(TrileadSSHPublicKeyAuthenticator.java:110) at com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.authenticate(SSHAuthenticator.java:431) at com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.authenticate(SSHAuthenticator.java:468) at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:881) at hudson.plugins.sshslaves.SSHLauncher.lambda$launch$0(SSHLauncher.java:434) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.io.IOException: 无法生成签名 at com.trilead.ssh2.signature.KeyAlgorithm.generateSignature(KeyAlgorithm.java:43) at com.trilead.ssh2.auth.AuthenticationManager.authenticatePublicKey(AuthenticationManager.java:316) ... 10 more Caused by: java.security.SignatureException: 无法签署数据 at java.base/sun.security.rsa.RSASignature.engineSign(RSASignature.java:196) at java.base/java.security.Signature$Delegate.engineSign(Signature.java:1423) at java.base/java.security.Signature.sign(Signature.java:712) at com.trilead.ssh2.signature.KeyAlgorithm.generateSignature(KeyAlgorithm.java:41) ... 11 more Caused by: javax.crypto.BadPaddingException: RSA私钥操作失败 at java.base/sun.security.rsa.RSACore.crtCrypt(RSACore.java:209) at java.base/sun.security.rsa.RSACore.rsa(RSACore.java:130) at java.base/sun.security.rsa.RSASignature.engineSign(RSASignature.java:193) ... 14 more [08/24/22 14:39:14] [SSH] 认证失败。
本地测试验证
在Jenkins所在机器上,执行以下命令可正常连接远程主机:
ssh name@host -p 22
补充说明
- 私钥通过命令
ssh-keygen -t rsa生成,使用的是id_rsa文件中的密钥(原描述中"rsa_id"应为笔误) - 此前创建的其他节点连接正常,仅当前节点异常,怀疑是配置问题,希望通过Jenkins UI完成问题排查与解决,无需操作Jenkins用户控制台
内容的提问来源于stack exchange,提问作者Fedor March
相关产品推荐
相关产品推荐

