为Gerrit和Hudson创建SSH密钥

8

我正在尝试使用 Hudson Gerrit Trigger 插件。

由于某些原因,Gerrit 拒绝接受位于 /var/lib/hudson/.ssh/id_rsaSSH 密钥。

在 GUI 中,我会遇到错误 Connection error : com.jcraft.jsch.JSchException: Auth fail;而在终端中,我会遇到错误 Permission denied (publickey)

我该如何生成并使用有效的私钥,以便让 HudsonGerrit 顺利协作?

1个回答

10

原帖作者Josh Smith解决了问题:

我实际上需要将用户(即我自己)的/var/lib/hudson/.ssh/id_rsa.pub SSH密钥添加到Gerrit GUI中。
然后,一切都像魔术般地解决了。
用户名必须是Gerrit中的用户名(管理员帐户)。

以下是我的原始建议:


Gerrit基于web的代码审查系统中将使用哪个用户?

该用户需要在其$ HOME/.ssh/authorized_keys中放置您的/var/lib/hudson/.ssh/id_rsa.pub公共SSH密钥,如此指南所示。

alt text

密钥分发

RSA密钥对的公共部分必须复制到客户端将访问的任何服务器。要复制的公钥信息应位于客户端的~/.ssh/id_rsa.pub文件中。
假设所有服务器均使用OpenSSH而不是其他SSH实现,则必须将公钥数据附加到服务器上的~/.ssh/authorized_keys文件中。

# first, upload public key from client to server
client$ scp ~/.ssh/id_rsa.pub server.example.org:

# next, setup the public key on server
server$ mkdir ~/.ssh
server$ chmod 700 ~/.ssh
server$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
server$ chmod 600 ~/.ssh/authorized_keys
server$ rm ~/id_rsa.pub

请务必将新的公钥数据追加到authorized_keys文件中,因为可能会使用多个公钥。每个公钥条目必须在不同的行上。


@VonC hudson/var/lib/hudson/.ssh 中有自己的 id_rsa.pub。这是你的意思吗? - Josh Smith
你是指像 /root/.ssh/ 这样的东西吗?在那个目录下只有 id_rsaid_rsa.pubknown_hosts 这些文件,都是由 hudson 用户创建的。 - Josh Smith
1
@Josh:"hudson用户的$HOME在哪里?" 没错。这是一个关于ssh相关Hudson问题的一般难点,我在Stack Overflow上看到过。您需要在执行该作业时以某种方式显示环境变量,并查看是否提及了$HOME - VonC
1
@Josh:你需要将id_rsa.pub的内容追加到authorized_keys文件中(如果该文件不存在,则创建该authorized_keys文件)。请参阅http://sial.org/howto/openssh/publickey-auth/获取更多详细信息。 - VonC
1
@Josh:太好了!你找到了解决方案。我已经更新了我的答案以反映它,并记录(供将来参考)公共SSH密钥分发的概念。 - VonC
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接