記憶だよりで書いてるから間違ってるところあるかも…
非公開リポジトリのような認証が必要なリポジトリにアクセスする場合に、秘密鍵による認証をしてアクセスしたい。
結論はめっちゃ簡単。でもこういうことは、やってみたことがないと詰まるやつ。
結論
普通にターミナル上で プロキシサーバー経由で git コマンドが通るようにすればよい。
秘密鍵/公開鍵ペアを作成する
2022/09/14 現在今時なのは下のコマンドの通りですかね。 GitHub に RSA 暗号登録できない(登録しても使えない)ですしね。
途中で色々聞かれるのは基本的にはそのままで OK。ただし、パスフレーズは入力しておきましょう。うっかり秘密鍵が漏洩したとき、使われてしまうまでの時間稼ぎができます。秘密鍵が漏洩したときは各所に登録してる対応する公開鍵削除しましょうね。
ssh-keygen -t ed25519
GitHub に公開鍵を登録する
公式が正義ですね。下記参照。
ssh がプロキシサーバーを経由するようにする
他にもいろいろあるだろうけれど、例えば corkscrew を使用する。
~/.ssh/config に設定ファイルを作る。ここでいうホームディレクトリは Jenkins ユーザーのホームディレクトリのこと。標準的には /var/lib/jenkins になっているはず。
Host github.com HostName ssh.github.com ProxyCommand corkscrew {プロキシサーバーのホスト名} {プロキシサーバーのポート番号} %h %p User git Port 443
鍵が登録できたことを確認する
ssh -T github.com
でアクセス成功したら OK。ただし、シェルアクセスできないので、すぐに追い出されます。
ここで、 ~/.ssh に known_hosts が作成されます。これが大事。 Jenkins 上で Job として動作させた際に known じゃない場合、別途設定が必要になります。面倒くさいからこれで事前作成しておく。
ターミナル上で、動作確認
git clone {リポジトリ} # 例えば git@github.com:FumiyaSenoo/TwitchCommentViewer.git
Jenkins 上で動かす
Credential として、↑で作成した秘密鍵を登録しておく。そして、 Job の中で GitHub にアクセスする際にその Credential を使用すること。それだけ。簡単。