我正在使用Vagrant来配置我们的开发环境。
Vagrant做了类似以下的事情:
将私人id_rsa
SSH密钥复制到/.ssh
$JENKINS_HOME
中的/var/lib/jenkins/
{/ 1}}
运行通过克隆所有GitHub存储库并构建和部署项目的脚本。
我们遇到的问题是上面列表中的#3
。
由于我们需要在脚本中运行它,因此我们无法针对GitHub手动运行该命令以将条目添加到known_hosts
。所以我尝试使用以下内容:
sudo -u jenkins ssh-keyscan github.com > /var/lib/jenkins/.ssh/known_hosts
我还试图在不使用jenkins
用户的情况下运行此功能,但未成功。
这是安装Jenkins后Vagrantfile
引用的脚本。
#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)发出请求而无需任何手动交互。
我的问题是我无法在没有编写脚本或将自己编辑到权限限制角落的情况下执行此操作。
我参考并看过类似的问题,例如帖子引用的打击
答案 0 :(得分:0)
一种解决方案是使用ssh_config选项GlobalKnownHostsFile
,默认位于/etc/ssh/ssh_known_hosts
- 如果你在这里存储github公钥(在root下使用ssh-keyscan
),你就不要#39; t必须使用chmod和类似的东西做任何魔术。