我试图建立与竹的持续集成。我想配置一个ssh进入我们舞台服务器的任务,cd进入正确的目录并执行git pull。通过ssh和旁路密码要求执行git pull的脚本?
我已经能够设置ssh任务,但是做git pull一直很困难。
步骤我已经采取了:
配置的SSH任务cd到项目目录并运行以下脚本:
#!/bin/bash echo "pulling from master" git pull origin master
脚本运行,但记录显示它试图拉动后出现
Permission denied (publickey).
错误。我将我的remote-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中复制/粘贴问题。 – BarFooBar