我正在使用 Vagrant 来配置我们的开发环境。
Vagrant 做了类似以下的事情:
id_rsa
/.ssh
的 SSH key 在 $JENKINS_HOME
这是/var/lib/jenkins/
我们遇到的问题是
#3
在上面的列表中。由于我们需要在脚本中运行它,因此我们无法手动对 GitHub 运行命令以将条目添加到
known_hosts
。 .所以我尝试使用以下内容:sudo -u jenkins ssh-keyscan github.com > /var/lib/jenkins/.ssh/known_hosts
我也尝试在不使用
jenkins
的情况下运行它。用户但未成功。这是
Vagrantfile
的脚本在安装 Jenkins 后引用。#Setup SSH for GitHub
echo "Configuring GitHub SSH Keys..."
if [ ! -d /var/lib/jenkins/.ssh ];
then
#copy private key to $JENKINS_HOME/.ssh
sudo mkdir -p /var/lib/jenkins/.ssh
sudo cp /vagrant/ssh/id_rsa /var/lib/jenkins/.ssh/
#Modify permissions so jenkins user can access
sudo chown -R jenkins:jenkins /var/lib/jenkins/.ssh/
sudo chmod 0600 /var/lib/jenkins/.ssh
sudo chmod 0600 /var/lib/jenkins/.ssh/id_rsa
#Add GitHub to known_hosts so it doesn't prompt us
sudo -u jenkins ssh-keyscan github.com > /var/lib/jenkins/.ssh/known_hosts
else
echo "GitHub SSH Keys already configured..."
fi
我这样做完全错了吗?
我的 目标 是能够将我的私钥复制到任何需要去的地方,这样我就可以向 GitHub(来自 Jenkins)发出请求,而无需任何手动交互。
我的 问题 是我似乎无法在没有脚本或 CHMODing 自己进入权限受限的角落的情况下做到这一点。
我已经引用并看到了类似的问题,例如帖子引用的打击
Authenticate Jenkins CI for Github private repository
最佳答案
一种解决方案是使用 ssh_config 选项 GlobalKnownHostsFile
,默认位于 /etc/ssh/ssh_known_hosts
-- 如果您在此处存储 github 公钥(在根目录下使用 ssh-keyscan
),则无需使用 chmod 之类的东西做任何魔术。
关于github - 通过 Vagrant 为 Jenkins 和 GIthub 自动配置 SSH key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31461699/