ForwardAgent在Jenkins

我试图在“通过SSH发布”jenkins插件启用ForwardAgent。 这将允许jenkins在远程服务器上执行部署,rsyncs和svn + ssh checkout。 但在GUI中没有这个选项。

在/ etc / ssh / ssh_config和/var/lib/jenkins/.ssh/config中将ForwardAgent设置为yes,但是当Jenkins作业通过sshlogin时,远程会话没有在代理中加载密钥。 (“无法打开与您的身份validation代理的连接”。)

有没有办法强制ForwardAgent,或更好的方式来做到这一点(通过jenkins奴隶)?

感谢您的任何想法,非常感谢!

我看到这个问题一年来一直没有答案,但这里是我解决问题的方法。

你想要做的是确保运行jenkins的用户

  1. 检查ssh-agent是否正在运行(如果没有,启动它)
  2. 检查一个键是否被加载(如果没有,加载一个)

把这个放在你的〜/ .bash_profile中,用于运行需要转发代理的用户的jenkins,以确保它与每个新shell一起运行:

 SSH_ENV="$HOME/.ssh/environment" function start_agent { echo "Initializing new SSH agent..." /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" echo succeeded chmod 600 "${SSH_ENV}" . "${SSH_ENV}" > /dev/null ssh-add .ssh/id_rsa cat .ssh/id_rsa.pub } #Source SSH Settings 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 if [ `ssh-add -l | grep "The agent has no identities." | wc -l` == 1 ] then ssh-add .ssh/id_rsa cat .ssh/id_rsa.pub fi 

我从其他地方拿走了大约50%的代码,但不记得在哪里给予信用。 这应该相当便携,它的使用不必局限于jenkins它应该在任何ssh代理转发情况下工作。