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

Vagrant 做了类似以下的事情:

  • 安装 Jenkins(和 Java,因为它是一个依赖项)
  • ...安装其他依赖项....
  • 私有(private)复制id_rsa /.ssh 的 SSH key 在 $JENKINS_HOME这是/var/lib/jenkins/
  • 运行克隆所有 GitHub 存储库并构建和部署项目的脚本。

  • 我们遇到的问题是 #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 之类的东西做任何魔术。


    评论关闭
    IT序号网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!