我无法通过bitbucket.org上的私人git repo获取Jenkins git插件进行身份验证。我使用ssh-keygen生成了私钥/公钥对,并在ssh密钥帐户页面下的bitbucket帐户中设置了公钥。
在作业配置页面中,我按如下方式设置了“源代码管理”部分:
Repository URL: git@bitbucket.org:mproject.git (the SSH url for clone)
Credentials: The private key id_rsa generated by ssh-keygen (no passphrase) and user git.
它立即出现以下错误:
Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h git@bitbucket.org:myproject.git HEAD" returned status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
当我在shell中的工作区目录中从命令行执行相同的git命令时,它可以正常工作。我在构建环境/属性文件路径中指定了〜/ .bashrc,所以当我在jenkins工作中运行时,我感到很困惑。
我的jenkins机器上只有两个用户(jenkins和root),我正在以用户jenkins的身份运行git命令。用户jenkins的主目录是/ home / jenkins。我的jenkins工作以匿名用户身份运行。这可能是问题吗?
我有以下.ssh文件:
-rw-r--r--. 1 jenkins jenkins 89 Apr 25 11:18 config
-rw-r--r--. 1 jenkins jenkins 137 Apr 24 13:56 environment
-rw-------. 1 jenkins jenkins 1766 Apr 24 13:54 id_rsa
-rw-r--r--. 1 jenkins jenkins 425 Apr 24 13:54 id_rsa.pub
-rw-r--r--. 1 jenkins jenkins 806 Apr 25 12:06 known_hosts
drwx------. 2 jenkins jenkins 85 Apr 25 12:05 .ssh
答案 0 :(得分:16)
我怀疑,你已经为你的用户添加了ssh密钥,而不是jenkins用户。
默认情况下Jenkins由用户Jenkins运行,主目录是(默认情况下)/var/lib/jenkins
。
要检查我的假设,请以jenkins用户身份登录:
su jenkins
并致电:
git -c core.askpass=true ls-remote -h git@bitbucket.org:myproject.git HEAD
检查是否会返回错误。
您应该有/var/lib/jenkins/.ssh
目录,其中包含正确的ssh
个密钥。您需要将该目录中的id_rsa.pub
添加到bitbucket上的帐户中。
接下来在作业配置中设置:
Repository URL: git@bitbucket.org:ntti3/gtip.git
Credentials: - none -
所描述的配置适用于我的Jenkins和bitbucket。
还请确保.ssh目录已设置适当的访问权限。 Ssh不喜欢太开放'目录:
-rw------- 1 jenkins jenkins 407 Apr 14 14:14 authorized_keys
-rw------- 1 jenkins jenkins 1676 Nov 25 16:37 id_rsa
-rw-rw-r-- 1 jenkins jenkins 400 Nov 25 16:38 id_rsa.pub
-rw-r--r-- 1 jenkins jenkins 3096 Feb 11 12:11 known_hosts
drwx------ 2 jenkins jenkins 4096 Apr 14 14:14 .ssh
答案 1 :(得分:3)
在我的情况下,问题与已经使用主目录/ home / jenkins创建jenkins用户然后以root身份安装jenkins有关。这可能会在主目录是/ var / lib / jenkins(正常)和/ home / jenkins之间造成一些混淆。修复是:
感谢您的帮助。
答案 2 :(得分:0)
就我而言,问题是RSA密钥指纹。我按照文档中的描述添加了Jenkins用户的ssh密钥,但得到了相同的错误消息。我通过使用
以Jenkins用户身份登录来解决它generateImageURL
然后,我输入以下内容
sudo su jenkins
并收到以下消息
git -c core.askpass=true ls-remote -h ssh://git@SERVER/PROJECT/REPO.git HEAD
回答“是”'对于这个问题,Bitbucket服务器被添加到已知主机列表中,这确实解决了我的问题。
答案 3 :(得分:0)
表示ssh.bash
ssh -K ${PATH}/.ssh2/id_rsa_2048_b $*
export GIT_SSH = ${PATH}/ssh.bash