1

Vagrant を使用して開発環境をプロビジョニングしています。

Vagrant は次のようなことを行います。

  1. Jenkins(および依存関係があるためJava)をインストールします
  2. ...その他の依存関係のインストール....
  3. id_rsa秘密SSH キーを にコピー/.ssh$JENKINS_HOMEます。/var/lib/jenkins/

  4. すべての GitHub リポジトリを複製し、プロジェクトをビルドおよびデプロイするスクリプトを実行します。

私たちが抱えている問題は#3、上記のリストにあります。

これはスクリプトで実行する必要があるため、GitHub に対してコマンドを手動で実行してエントリを に追加することはできませんknown_hosts。だから私は以下を使用してみました:

sudo -u jenkins ssh-keyscan github.com > /var/lib/jenkins/.ssh/known_hosts

ユーザーを使用せずにこれを実行しようとしましjenkinsたが、失敗しました。

VagrantfileJenkins のインストール後に が参照しているスクリプトを次に示します。

#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

私はこれを完全に間違っていますか?

私の目標は、秘密鍵を必要な場所にコピーして、手動での操作なしで (Jenkins から) GitHub にリクエストできるようにすることです。

私の問題は、スクリプトを作成したり、権限が制限されたコーナーに自分自身をCHMODしたりしないと、これを行うことができないように見えることです。

参照された投稿などの同様の問題を参照して見ました

Github プライベート リポジトリの Jenkins CI を認証する

4

1 に答える 1

1

1 つの解決策は ssh_config オプションを使用GlobalKnownHostsFileすることです。これはデフォルトで次の場所にあります/etc/ssh/ssh_known_hosts。ここに github 公開鍵を ( ssh-keyscanroot で使用して) 保存すると、chmod などで魔法をかける必要がなくなります。

于 2015-07-16T20:13:10.150 に答える