通过 ssh 执行 git 拉取并绕过密码要求的脚本?

Script to perform a git pull via ssh and bypass passphrase requirements?

我正在尝试设置与 Bamboo 的持续集成。我想配置一个任务,ssh 进入我们的阶段服务器,cd 进入正确的目录并执行 git pull。

我已经能够设置 ssh 任务,但是执行 git 拉取很困难。

我采取的步骤:

并将其添加到 .ssh/config 文件中:

Host myStashInstance.org
 IdentityFile ~/.ssh/id_rsa

我想知道在开始新会话时启动 ssh-agent 的下一步是什么,以便我可以继续弄清楚如何完成此作业的配置。 (如果我完全走错了路,也可以接受其他途径的建议。)

总而言之,您运行遇到以下问题:

  • 服务器 A 上的 Bamboo 代理 运行
  • 服务器 B 是您的暂存服务器
  • 作为在服务器 A 上构建 运行ning 的一部分,您想通过 SSH 连接到 B 并在那里执行 git pull
  • Git 存储库的身份验证要求您输入密码或口令(即使使用 ssh-agent)。

有几种方法可以解决这个问题:

选项 1:运行临时服务器上的 Bamboo 代理

为简化此环境,请在临时服务器上安装 Bamboo 代理。在 Bamboo 构建计划中输入 Git URL 和凭据,让 Bamboo 负责工作。

Bamboo 将提取 Git 存储库,然后您可以 运行 任何您想要的步骤并部署到您的登台服务器进程。

选项 2:部署到暂存服务器

不要在临时服务器上执行 Git 操作,而是在服务器 A 上执行。在 Bamboo 构建计划中输入 Git URL 和凭据,让 Bamboo 负责的工作。

一旦您的项目在服务器 A 上签出,运行 无论您想在那里执行什么构建步骤,然后打包 (zip/tar/jar/...) 构建结果并将它们复制到暂存服务器。也许您根本不需要在登台服务器上使用 Git。

选项 3:使用 .netrc 文件进行 Git 身份验证

这是最不安全的选项。将您的远程 URL 切换回 HTTPS,然后在登台服务器上创建一个 ~/.netrc 文件,并在其中为您的 Git 服务器添加一个条目,提供用户名和密码,如下所述:https://confluence.atlassian.com/display/STASH/Permanently+authenticating+with+Git+repositories#PermanentlyauthenticatingwithGitrepositories-Usingthe.netrcfile

示例:

machine mygitserver
login mario
password SECRET

注意,这需要您将密码以明文形式存储在 .netrc 文件中。仅当您可以承受此风险时才使用此方法。如果用于此帐户的密码发生更改,您也必须在此文件中进行更改。您可能想为此使用 technical/service 帐户 ,而不是真实的用户帐户。尽可能锁定此帐户。

这三个选项中的一个应该可以帮助您解决问题。