通过Vagrant

时间:2015-07-16 18:18:12

标签: github ssh vagrant ssh-keys sshd

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

Vagrant做了类似以下的事情:

  1. 安装Jenkins(和Java因为它的依赖关系)
  2. ...其他依赖安装......
  3. 将私人id_rsa SSH密钥复制到/.ssh $JENKINS_HOME中的/var/lib/jenkins/ {/ 1}}

  4. 运行通过克隆所有GitHub存储库并构建和部署项目的脚本。

  5. 我们遇到的问题是上面列表中的#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)发出请求而无需任何手动交互。

    我的问题是我无法在没有编写脚本或将自己编辑到权限限制角落的情况下执行此操作。

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

    Authenticate Jenkins CI for Github private repository

1 个答案:

答案 0 :(得分:0)

一种解决方案是使用ssh_config选项GlobalKnownHostsFile,默认位于/etc/ssh/ssh_known_hosts - 如果你在这里存储github公钥(在root下使用ssh-keyscan),你就不要#39; t必须使用chmod和类似的东西做任何魔术。