【发布时间】:2015-07-17 04:13:10
【问题描述】:
我正在使用 Vagrant 来配置我们的开发环境。
Vagrant 做了类似以下的事情:
- 安装 Jenkins(和 Java,因为它是一个依赖项)
- ...其他依赖安装....
将私有
id_rsaSSH 密钥复制到$JENKINS_HOME中的/.ssh,即/var/lib/jenkins/运行克隆所有 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)发出请求,而无需任何手动交互。
我的问题是,如果不编写脚本或 CHMODing 自己进入权限受限的角落,我似乎无法做到这一点。
我已经参考并看到过类似的问题,例如帖子引用的打击
【问题讨论】:
标签: github ssh vagrant ssh-keys sshd