Jenkins管道使用sshagent插件导致git克隆失败?

Jenkins管道使用sshagent插件导致git克隆失败?,git,jenkins,jenkins-pipeline,Git,Jenkins,Jenkins Pipeline,Jenkins v2.164.3,ssh代理插件1.19 我创建了一个新的Ubuntu构建节点,名为testfleet。我在节点中有以下文件 /home/ubuntu/.gitconfig ------------------------ [user] (tab)name = myUser (tab)email = myUser@myemail.com $ ls -al .gitconfig -rw-r--r-- 1 ubuntu ubuntu 58 Jan 25 04:27 .gitco

Jenkins v2.164.3,ssh代理插件1.19

我创建了一个新的Ubuntu构建节点,名为
testfleet
。我在节点中有以下文件

/home/ubuntu/.gitconfig
------------------------
[user]
(tab)name = myUser
(tab)email = myUser@myemail.com

$ ls -al .gitconfig
-rw-r--r-- 1 ubuntu ubuntu   58 Jan 25 04:27 .gitconfig
现在,我有一个詹金斯管道可以这样做

node('test-fleet') {
   stage('test git') {
     sshagent(credentials: ['myUser-creds']) {
       sh """
          export GIT_SSH_COMMAND=\"ssh -v\"
          git ls-remote git@bitbucket.org:project/myrepo.git
       """
     }
   }
}
我在我的工作控制台里得到这个

[ssh-agent] Using credentials myUser-creds (Bitbucket credentials)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Exec ssh-agent (binary ssh-agent on a remote machine)
SSH_AUTH_SOCK=/tmp/ssh-V4G1oYutEMCW/agent.16446
SSH_AGENT_PID=16448
Running ssh-add (command line suppressed)
ssh-agent
Identity added: /home/jenkins/workspace/Utilities/Playground/test-ec2-fleet-ssh@tmp/private_key_2248848783998450720.key (/home/jenkins/workspace/Utilities/Playground/test-ec2-fleet-ssh@tmp/private_key_2248848783998450720.key)
Cloning into 'myrepo'...

+ git ls-remote git@bitbucket.org:project/myrepo.git
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to bitbucket.org [18.205.93.2] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/ubuntu/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ubuntu/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ubuntu/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ubuntu/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ubuntu/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ubuntu/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ubuntu/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ubuntu/.ssh/id_ed25519-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: Remote protocol version 2.0, remote software version conker_d603cef0bf app-133
debug1: no match: conker_d603cef0bf app-133
debug1: Authenticating to bitbucket.org:22 as 'git'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256@libssh.org
debug1: kex: host key algorithm: ssh-rsa
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ssh-rsa SHA256:zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A
debug1: read_passphrase: can't open /dev/tty: No such device or address
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
[ssh代理]使用凭据myUser凭据(Bitbucket凭据)
[ssh代理]正在查找ssh代理实现。。。
[ssh代理]Exec ssh代理(远程计算机上的二进制ssh代理)
SSH\u AUTH\u SOCK=/tmp/SSH-V4G1oYutEMCW/agent.16446
SSH\u代理\u PID=16448
运行ssh add(命令行被抑制)
ssh代理
添加的标识:/home/jenkins/workspace/Utilities/playway/test-ec2-fleet-ssh@tmp/私钥2248848783998450720.key(/home/jenkins/workspace/Utilities/playway/test-ec2-fleet-ssh@tmp/私钥(2248848783998450720.密钥)
克隆到“myrepo”。。。
+git ls远程git@bitbucket.org:project/myrepo.git
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3,OpenSSL 1.0.2n 2017年12月7日
debug1:读取配置数据/etc/ssh/ssh\u config
debug1:/etc/ssh/ssh\u配置第19行:应用*
debug1:连接到bitbucket.org[18.205.93.2]端口22。
debug1:已建立连接。
debug1:key\u load\u public:没有这样的文件或目录
debug1:identity file/home/ubuntu/.ssh/id\u rsa type-1
debug1:key\u load\u public:没有这样的文件或目录
debug1:identity file/home/ubuntu/.ssh/id\u rsa-cert type-1
debug1:key\u load\u public:没有这样的文件或目录
debug1:identity file/home/ubuntu/.ssh/id_dsa type-1
debug1:key\u load\u public:没有这样的文件或目录
debug1:identity file/home/ubuntu/.ssh/id_dsa-cert type-1
debug1:key\u load\u public:没有这样的文件或目录
debug1:identity file/home/ubuntu/.ssh/id_ecdsa type-1
debug1:key\u load\u public:没有这样的文件或目录
debug1:identity file/home/ubuntu/.ssh/id_ecdsa-cert type-1
debug1:key\u load\u public:没有这样的文件或目录
debug1:identity file/home/ubuntu/.ssh/id_ed25519 type-1
debug1:key\u load\u public:没有这样的文件或目录
debug1:identity file/home/ubuntu/.ssh/id_ed25519-cert type-1
debug1:本地版本字符串SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
调试1:远程协议版本2.0,远程软件版本conker_d603cef0bf app-133
调试1:不匹配:conker_d603cef0bf app-133
debug1:正在以'git'身份验证bitbucket.org:22
debug1:SSH2\u MSG\u KEXINIT已发送
debug1:SSH2\u MSG\u KEXINIT已收到
debug1:kex:算法:curve25519-sha256@libssh.org
debug1:kex:主机密钥算法:ssh-rsa
debug1:kex:server->client cipher:chachacha20-poly1305@openssh.comMAC:压缩:无
debug1:kex:client->server cipher:chachacha20-poly1305@openssh.comMAC:压缩:无
debug1:需要SSH2\u MSG\u KEX\u ECDH\u回复
debug1:服务器主机密钥:ssh rsa SHA256:zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A
debug1:读取\u密码短语:无法打开/dev/tty:没有此类设备或地址
主机密钥验证失败。
致命:无法从远程存储库读取。
请确保您拥有正确的访问权限
并且存储库存在。
我知道我使用的是正确的信用,回购协议是存在的。我有另一个构建节点,它在该节点上工作,因此我知道我的Jenkins设置正确,问题出在新的构建节点上


关于如何解决这个问题,有什么线索吗?

首先检查执行
git ls remote时相同的键是否有效git@bitbucket.org:project/myrepo.git
在会话中使用与运行Jenkins的用户相同的用户


并检查
myUser-creds
是否为保护SSH私钥的实际密码短语(而不是密码:passphrase)。说到SSH,用户名/密码中没有“凭据”。

首先,检查哪个用户拥有Jenkins。您可以通过列出jenkins安装目录的所有者(默认为/var/lib/jenkins)来找到它。然后与该用户一起登录并签出该用户的.ssh文件夹。由于Jenkins正在使用SSH进行签出,根据这个答案,$HOME/.SSH/known_hosts中应该有一个问题。遵循为运行jenkins的正确用户提供的链接指南,使git签出正常工作。问题是,
myUser
实际上没有任何ssh存储库来检查ssh密钥。在您的计算机中创建
myUser
并添加
.ssh
文件夹,或者使用其他用户。

谢谢
myUser creds
只是在Jenkins凭据控制台中定义的凭据的名称,它是ssh pub/priv密钥对。@ChrisF OK:您的私有ssh密钥密码短语受保护吗?换句话说,您需要ssh代理吗?不,这不是解释protected@ChrisF您可以添加一个
env GIT\u SSH\u COMMAND=“SSH-v'
,以查看正在进行的操作。这很有帮助-它在
/home/ubuntu/.SSH
目录中没有看到私钥。但我认为这就是sshagent()所做的是吗,尽管有时我看不到添加的
标识…
line.WT…??我以用户ubuntu的身份运行(
whoami
显示了这一点)当作业运行时,但由于
.gitconfig
,ssh用户实际上是
myUser
。请注意,我没有构建~/.ssh/know\u hosts文件,这可能是一个线索。请尝试将用户更改为“ubuntu”“在.gitconfig文件中。看看结果如何将用户切换到
ubuntu
确实有帮助,我也没料到。问题是
myUser
实际上没有任何ssh存储库来检查ssh密钥。在您的计算机中创建
myUser
,并添加
.ssh
文件夹,或者使用另一个用户。但我有另一个类似设置的Ubuntu box正在运行,我没有任何问题。也就是说,上面也没有用户
myUser
。这就是让我讨厌的地方。