当前位置: 首页 > 知识库问答 >
问题:

Jenkins管道失败git克隆使用sshaent插件?

艾仲渊
2023-03-14

Jenkinsssh代理插件

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

/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

现在我有一条Jenkins管道可以做到这一点

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.

我知道我使用了正确的信条,并且存储库存在。我有另一个构建节点,它在那个节点上工作,所以我知道我的Jenkins设置正确,问题出在新的构建节点上。

有什么解决办法吗?

共有2个答案

东门航
2023-03-14

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

高展
2023-03-14

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

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

 类似资料:
  • 我正试图通过bitbucket管道自动将我的应用程序部署到数字海洋。以下是部署的步骤: 使用ssh连接到远程数字海洋水滴 通过使用ssh运行git克隆来克隆我的存储库 使用docker-compose启动我的应用程序 我已经成功地设置了对远程的ssh访问。我还配置了对存储库的ssh访问,并且可以从远程服务器成功执行git克隆。但是,在管道中,当与远程服务器的连接成功时,git克隆命令失败,出现以下

  • 尝试访问私有公司 tfs。他们通过向Windows用户(域\登录)授予适当的权限来授予我访问权限。 我可以很好地访问tfs的web界面,浏览存储库和其他东西。 但当我试图逃跑 它失败了 尝试与家用PC没有公司网络的东西 - 同样的错误。 在PowerShell、Git Bash、Clone via VisualStudio中尝试过-同样的错误。 SSH关闭(给定请求超时)。 网络 企业助手试图帮助

  • 我们一直在使用jenkins和github构建应用程序。从最近两天开始,jenkins无法从git中获取代码,在控制台中我发现错误是“no kex alg”。有人知道如何修复这个错误吗?如果能尽早提供帮助,我们将不胜感激。 错误:获取远程存储库“origin”时出错 hudson.plugins.git。GitException:无法从获取git@github.houston.entsvcs.ne

  • (这主要是我在使用GitHub时突然想到的,因此我不太介意任何解决方案是否特定于GitHub。但问题本身并不特定于GitHub,任何解决方案也不一定都是。) 您总是可以使用https克隆公共GitHub回购: 如果您有GitHub知道的SSH密钥,还可以使用 (我认为在使用Bitbucket时,类似的选项也适用。) 在添加子模块时,也有这两个选项。 当添加子模块时,您通常会添加SSH版本,因此您可

  • 到现在为止,读者已经零略到Git的灵活性以及健壮性。Git可以通过重置随意撤销提交,可以通过变基操作更改历史,可以随意重组提交,还可以通过reflog的记录纠正错误的操作。但是再健壮的版本库设计,也抵挡不了存储介质的崩溃。还有一点就是不要忘了Git版本库是躲在工作区根目录下的.git目录中,如果忘了这一点直接删除工作区,就会把版本库也同时删掉,悲剧就此发生。 “不要把鸡蛋装在一个篮子里”,是颠扑不

  • 我很难在git上克隆回购协议。我已经尝试了好几天,尝试了很多解决方案(在大多数情况下,问题略有不同,但似乎适用),但没有任何效果。 我试图关闭防病毒和防火墙,但没有帮助。我也尝试过卸载和重新安装网络适配器驱动程序(并重启计算机),但没有成功。 据我所知,这是某个地方的网络问题,因为远程服务器一直挂断,但我无法解决这个问题。 使用git clone-v--进度似乎给出了与git clone相同的输出