Fumiya_Senoo’s diary

日々の気になったこと、役立ったことを記録しています

プロキシサーバー配下の Jenkins サーバーから秘密鍵を使用して GitHub にアクセスしたかった話

記憶だよりで書いてるから間違ってるところあるかも…

非公開リポジトリのような認証が必要なリポジトリにアクセスする場合に、秘密鍵による認証をしてアクセスしたい。

結論はめっちゃ簡単。でもこういうことは、やってみたことがないと詰まるやつ。

結論

普通にターミナル上で プロキシサーバー経由で git コマンドが通るようにすればよい。

秘密鍵/公開鍵ペアを作成する

2022/09/14 現在今時なのは下のコマンドの通りですかね。 GitHub に RSA 暗号登録できない(登録しても使えない)ですしね。

途中で色々聞かれるのは基本的にはそのままで OK。ただし、パスフレーズは入力しておきましょう。うっかり秘密鍵が漏洩したとき、使われてしまうまでの時間稼ぎができます。秘密鍵が漏洩したときは各所に登録してる対応する公開鍵削除しましょうね。

ssh-keygen -t ed25519

GitHub に公開鍵を登録する

公式が正義ですね。下記参照。

docs.github.com

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 を使用すること。それだけ。簡単。