为什么Jenkins在启动代理时说“服务器拒绝了1个私钥”?

7ajki6be  于 2022-12-11  发布在  Jenkins
关注(0)|答案(5)|浏览(330)

我可以使用SSH成功连接到远程计算机,但当我从Jenkins启动代理时,它抛出以下错误:

ERROR: Server rejected the 1 private key(s) for user1 (credentialId:xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/method:publickey)
[01/19/17 05:35:15] [SSH] Authentication failed.
hudson.AbortException: Authentication failed.
    at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:1219)
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:714)
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:709)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
[01/19/17 05:35:15] Launch failed - cleaning up connection
[01/19/17 05:35:15] [SSH] Connection closed.

我可以使用user1建立从主机器到节点机器的SSH连接,但是当我尝试使用jenkins的user1启动代理时,它拒绝私钥。有什么解决方案可以克服这个问题吗?

nzk0hqpo

nzk0hqpo1#

我解决这个问题以下步骤:

从目标从属节点的控制台

1.切换到root用户:

sudo su

1.添加主目录为/var/lib/jenkins的jenkins用户(注意:我将我的主目录保存在/var/lib/jenkins中):

useradd -d /var/lib/jenkins jenkins

"来自Jenkins大师"
从主服务器上的Jenkins用户处复制/var/lib/jenkins/.ssh/id_rsa.pub密钥

从目标从属节点的控制台

1.为Jenkins用户创建authorized_keys文件

mkdir /var/lib/jenkins/.ssh
touch /var/lib/jenkins/.ssh/authorized_keys

1.将密钥从Jenkins母版粘贴到文件vim中。保存为:wq!
1.确保文件具有正确的所有者和权限。

chown -R jenkins /var/lib/jenkins/.ssh
chmod 600 /var/lib/jenkins/.ssh/authorized_keys
chmod 700 /var/lib/jenkins/.ssh
wnvonmuf

wnvonmuf2#

我通过以下步骤解决了此问题:
1)请确保您在从属计算机和主计算机上的路径都是正确的。您还需要使用正确的用户登录计算机。假设我需要创建一个新的全局jenkins用户“jenkins”,并且我希望我的密钥位于路径“/home/jenkins/.ssh/"中,请首先将“jenkins”用户添加到计算机中。
2)现在,使用https://support.cloudbees.com/hc/en-us/articles/222978868-How-to-Connect-to-Remote-SSH-Slaves-中给出的步骤创建.ssh文件夹并生成ssh密钥
3)确保在主机中执行上述步骤1和2
4)您需要在主计算机和从计算机上的相同路径中具有ssh密钥,并且具有相同的“jenkins”用户权限。
5)最后,来回ssh两台机器的IP以检查终端的双向连接。
6)配置jenkins凭据和节点。确保在节点配置中给予相同的远程根目录-“/home/jenkins”,并选择“manually trusted key verification strategy”-如https://linuxacademy.com/community/posts/show/topic/16008-jenkins-adding-a-slave中所建议的

oknwwptz

oknwwptz3#

我的解决方案是:

$ user add -d /var/lib/jenkins jenkins
$ sudo su
$ passwd jenkins
$ chown -R jenkins /var/lib/jenkins/.ssh/*
$ chmod 700 .ssh

在周围篡改了2个小时后,它工作了...

mu0hgdu0

mu0hgdu04#

主服务器需要添加到已知主机列表中。您需要做的是从本地SSH到主服务器。然后使用主服务器的私钥SSH到从服务器。如果您可以手动执行此操作,那么Jenkins也可以执行此操作。
我在Jenkins中使用了主人的私钥作为凭据,按照@Aamir的回答终于有些成功了。

fcg9iug3

fcg9iug35#

将ssh密钥类型从“rsa”更改为“ed25519”对我有效

ssh-keygen -t ed25519

相关问题