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

在Jenkins for Git中管理SSH密钥

裴俊能
2023-03-14

我正在尝试让Jenkins启动并运行一个GitHub托管的存储库(使用Jenkins Git插件)。存储库有多个git子模块,所以我不确定是否要尝试管理多个部署密钥。

我的个人GitHub用户帐户是我希望与Jenkins合作的每个项目的合作者,因此我在/var/lib/Jenkins/中生成了一个SSH密钥。ssh并将其添加到我的个人GitHub帐户。

但是,当我尝试将存储库URL添加到我的Jenkins项目配置时,我会得到:

Failed to connect to repository : Command "git ls-remote -h git@github.com:***/***.git HEAD" returned status code 128:
stdout: 
stderr: Host key verification failed. 
fatal: The remote end hung up unexpectedly

同样,当我计划构建时,我得到:

stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly

我还尝试了设置SSH配置文件,如这里概述的,但没有用。

有人能解释一下吗?谢谢

编辑

我应该补充一点,我正在运行CentOS 5.8

共有3个答案

凌朗
2023-03-14

根据本文,您可以尝试以下命令:

   ssh-add -l

如果你的钥匙不在名单上,那么

   ssh-add /var/lib/jenkins/.ssh/id_rsa_project
长孙德惠
2023-03-14

你试过以Jenkins用户的身份登录吗?

试试这个:

sudo -i -u jenkins #For RedHat you might have to do 'su' instead.
git clone git@github.com:your/repo.git

如果主机未被添加或授权(因此我总是以hudson/jenkins的身份手动登录到github/bitbucket的第一个连接),您经常会看到失败,但您包含的链接可能会修复这一问题。

如果上述方法无效,请尝试重新复制密钥。确保它是发布密钥(即id_rsa.pub)。也许你错过了一些角色?

华英睿
2023-03-14

看起来jenkins试图连接的github.com主机没有列在Jenkins用户的$HOME/. ssh/known_hosts下。Jenkins以用户jenkins的身份运行在大多数发行版上,因此有自己的. ssh目录来存储公钥和known_hosts的列表。

我能想到的解决这个问题的最简单方法是:

# Login as the jenkins user and specify shell explicity,
# since the default shell is /bin/false for most
# jenkins installations.
sudo su jenkins -s /bin/bash

cd SOME_TMP_DIR
# git clone YOUR_GITHUB_URL

# Allow adding the SSH host key to your known_hosts

# Exit from su
exit
 类似资料:
  • 问题内容: 我正在尝试使用GitHub托管存储库(使用Jenkins Git插件)启动Jenkins并使其运行。该存储库具有多个git子模块,因此我不确定我是否想尝试和管理多个部署密钥。 我的个人GitHub用户帐户是我希望与Jenkins进行的每个项目的合作者,因此我在其中生成了一个SSH密钥并将其添加到我的个人GitHub帐户中。 但是,当我尝试将存储库URL添加到我的Jenkins项目配置中

  • 唯一安全的服务器是关闭的。尽管如此,对于服务器访问控制的一个好方法是, 使用经过私钥短语保护的 SSH 密钥的用户帐户, 而不是多个用户使用一个共享账号和一个众所周知的口令。 Puppet 使这种管理变得简单,感谢其内置的 ssh_authorized_key 类型。 将它与上一节讲述的虚拟用户相结合,你可以创建一个包括 user 和 ssh_authorized_key 的 define。 对于

  • 在 Swarm 集群中管理敏感数据 在动态的、大规模的分布式集群上,管理和分发 密码、证书 等敏感信息是极其重要的工作。传统的密钥分发方式(如密钥放入镜像中,设置环境变量,volume 动态挂载等)都存在着潜在的巨大的安全风险。 Docker 目前已经提供了 secrets 管理功能,用户可以在 Swarm 集群中安全地管理密码、密钥证书等敏感数据,并允许在多个 Docker 容器实例之间共享访问

  • 收集密钥 在准备一台主机作为 OSD 或元数据服务器时,你得收集监视器、 OSD 、和 MDS 的初始密钥环,可用下列命令: ceph-deploy gatherkeys {monitor-host} Note 检索密钥时,指定一个包含 Ceph 监视器的主机。 Note 如果建设集群时配置了多个监视器,需确保它们都已启动且在运行。如果监视器没能形成法定人数, ceph-create-keys 就

  • "管理密码" 对话框提供了保存您经常使用的密码和以后快速访问它们的方法。它包含了用户存储的密码记录列表。通常密码标签和压缩文件掩码会被包含在此列表中,但是如果没有定义标签,“标签”列将显示密码文本。 您可以从常规 WinRAR 密码对话框中打开“管理密码”。在您输入默认密码或 WinRAR 询问一个加密的文件、压缩文件的密码时,点击“管理密码...”按钮。 点击“添加” 按钮添加一个新的密码记录到

  • 密码管理在非必要情况下一般不会重新发明,Django致力于提供一套安全、灵活的工具集来管理用户密码。本文档描述Django存储密码和hash存储方法配置的方式,以及使用hash密码的一些实例。 另见 即使用户可能会使用强密码,攻击者也可能窃听到他们的连接。使用HTTPS来避免在HTTP连接上发送密码(或者任何敏感的数据),因为否则密码又被嗅探的风险。 Django如何储存密码 Django通常使用