【问题标题】:Automating SSH Key Configuration for Jenkins and GIthub Through Vagrant通过 Vagrant 为 Jenkins 和 GIthub 自动配置 SSH 密钥
【发布时间】:2015-07-17 04:13:10
【问题描述】:

我正在使用 Vagrant 来配置我们的开发环境。

Vagrant 做了类似以下的事情:

  1. 安装 Jenkins(和 Java,因为它是一个依赖项)
  2. ...其他依赖安装....
  3. 将私有id_rsa SSH 密钥复制到$JENKINS_HOME 中的/.ssh,即/var/lib/jenkins/

  4. 运行克隆所有 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 自己进入权限受限的角落,我似乎无法做到这一点。

我已经参考并看到过类似的问题,例如帖子引用的打击

Authenticate Jenkins CI for Github private repository

【问题讨论】:

    标签: github ssh vagrant ssh-keys sshd


    【解决方案1】:

    一种解决方案是使用 ssh_config 选项 GlobalKnownHostsFile,默认情况下位于 /etc/ssh/ssh_known_hosts - 如果您在此处存储 github 公钥(在 root 下使用 ssh-keyscan),则无需执行任何操作chmod 之类的魔法。

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 2022-09-23
      • 2017-10-26
      • 2014-08-20
      • 1970-01-01
      • 2014-02-19
      相关资源
      最近更新 更多