这是我的设置:
sudo su jenkins
并尝试ssh -vT git@github.com
时,我总是被问到我的密码,但我总是最终被认证。 (详细选项显示使用了哪个键)。所以:
jenkins@alpm:~/jobs/test git/workspace$ git pull
Enter passphrase for key '/var/lib/jenkins/.ssh/id*_rsa':
Already up-to-date.
到目前为止,我已按照信中的说明进行操作。问题是Jenkins作业失败并出现以下错误:
status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly
这与我在输入密码短语时得到的错误相同(当然,詹金斯并没有问我密码短语)。以下几页:
告诉我,ssh-agent可以帮助记住密码,当我使用自己的用户时,它会执行,而不是 jenkins id。请注意,以普通用户身份运行时会产生:
echo "$SSH_AUTH_SOCK"
/tmp/keyring-nQlwf9/ssh
虽然运行与我的'jenkins'相同的命令但没有产生任何结果(甚至没有拒绝许可)
我对这个问题的理解是不会记住密码短语。 你有什么主意吗? 我应该为jenkins用户启动ssh-agent或密钥环管理器?怎么样? 或转发到同一台机器时ssh转发是否合适? 有更明智的想法吗?
ps:我从不sudo gitted
,我总是使用jenkins或我的用户帐户(如此SO帖子所述 - Ubuntu/GitHub SSH Key Issue)
答案 0 :(得分:39)
由于几个月没有人从评论中写出答案,我很快就会这样做。
有两个可能的问题/解决方案:
使用错误的用户创建的id_rsa
创建id_rsa作为jenkins用户(请参阅hudson cannot fetch from git repository)
将密码留空
答案 1 :(得分:8)
我通过在创建密钥时将密码短语留空来解决这个问题。
答案 2 :(得分:7)
总结Jenkins服务器上必须做的事情:
# 1. Create the folder containing the SSH keys if necessary
if [ ! -e ~jenkins/.ssh ]; then mkdir ~jenkins/.ssh; fi
cd ~jenkins/.ssh/
# 2. Create the SSH pair of keys
# The comment will help to identify the SSH key on target systems
ssh-keygen -C "jenkins" -f ~jenkins/.ssh/id_rsa -P ""
# 3. Assign the proper access rights
chown -R jenkins ~jenkins/.ssh/
chmod 700 ~jenkins/.ssh
chmod 600 ~jenkins/.ssh/*
记住:
ssh -vvv git@github.com
(根据您的git服务器更改地址)答案 3 :(得分:3)
我想补充一点,如果你手工创建了密钥,它们可能仍归你所有,jenkins无法读取,请尝试:
sudo chown jenkins -R /var/lib/jenkins/.ssh/*
答案 4 :(得分:2)
要检查以下内容:
所有检查后 - >尝试 ssh -vvv git@github.com 不要尝试在jenkins中进行配置,直到ssh工作!
答案 5 :(得分:1)
如果您在Windows中将jenkins作为服务运行,则需要验证运行服务的用户。如果您使用用户“MACHINENAME \ user”创建了密钥,请更改服务,以便运行它的用户可以匹配
答案 6 :(得分:1)
对于Mac用户,可以通过以下步骤删除现有密钥并创建新的私钥和公钥来解决此问题:
1.删除位于 /Users/Username/.ssh 的所有公钥和私钥
2.删除Jenkins中凭据标签下保存的所有凭据。
3.删除 Github存储库设置中定义的现有公共SSH密钥。
中的步骤创建新的 SSH密钥(私有和公共:id_rsa和id_rsa.pub)5.在 Github或等效的存储库设置中设置新创建的公共SSH密钥(id_rsa.pub)。
<\ n> 6.在Jenkins中,通过为您的Github用户名添加私有SSH密钥(id_rsa)来创建新凭据。7.现在应该删除错误。
答案 7 :(得分:0)
密钥需要从jenkins用户生成。
sudo su jenkins
ssh-keygen
生成密钥后,应将其添加为bitbucket或github中的ssh密钥。