我正在使用 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 之类的东西做任何魔术。




