【发布时间】:2015-09-28 14:22:37
【问题描述】:
我正在尝试设置与 Bamboo 的持续集成。我想配置一个任务,让 ssh 进入我们的阶段服务器,cd 进入正确的目录并执行 git pull。
我已经能够设置 ssh 任务,但是执行 git pull 很困难。
我已采取的步骤:
-
配置 ssh 任务以 cd 进入项目目录并运行以下脚本:
#!/bin/bash echo "pulling from master" git pull origin master 脚本运行,但在尝试拉取后日志显示
Permission denied (publickey).错误。我将远程 URL 从 HTTPS 切换到 ssh 并创建了一个公钥。现在,当我尝试手动拉取时,它会询问密钥的密码。
使用
ssh-agent缓存会话的密码。-
意识到这个缓存只会持续到我关闭会话,所以我按照本文 (https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git) 中的步骤在每个新会话中启动 ssh-agent。即我将此脚本添加到我的
.bashrc:SSH_ENV=$HOME/.ssh/environment # start the ssh-agent function start_agent { echo "Initializing new SSH agent..." # spawn ssh-agent /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" echo succeeded chmod 600 "${SSH_ENV}" . "${SSH_ENV}" > /dev/null /usr/bin/ssh-add } if [ -f "${SSH_ENV}" ]; then . "${SSH_ENV}" > /dev/null ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { start_agent; } else start_agent; fi
并将其添加到 .ssh/config 文件中:
Host myStashInstance.org
IdentityFile ~/.ssh/id_rsa
- 文章说我应该被提示输入密码并且代理会启动,但那还没有发生。我仍然需要手动启动 ssh-agent。
我想知道在我开始新会话时启动 ssh-agent 的后续步骤是什么,以便我可以继续弄清楚如何完成此作业的配置。 (如果我完全走错了路,也愿意接受其他途径的建议。)
【问题讨论】:
-
您需要将启动代理的代码放入您的
~/.bash_profile中,以便它在登录shell 中启动。 -
这仍然行不通,但它绝对应该。我可能在原始脚本中遇到了来自 chrome 的复制/粘贴问题。
标签: git shell continuous-integration bamboo ssh-agent