はじめに
JenkinsでGitHubのプライベートリポジトリを扱う際に必要な、SSHで認証を通すための手順を紹介します。特に、秘密鍵の「直接入力」が分からなくてハマりました。。。
内容はWin/Macでほぼ共通です。
手順
(SSHをまだ作っていない場合)
# SSHキーの作成
# 「ユーザー名」「パスワード」「パスワード(確認)」と3回入力を求められるが、
# 全て空白(そのままエンター)でもOK
$ ssh-keygen
# 公開鍵をGitHubに登録
# 公開鍵をクリップボードにコピー(Macの場合)
$ pbcopy < ~/.ssh/id_rsa.pub
# 公開鍵をクリップボードにコピー(Winの場合)
$ clip < ~/.ssh/id_rsa.pub
GitHubの Settings > SSH and GPG keys にアクセスし、「New SSH key」から先ほどクリップボードにコピーした内容を貼り付ける。名前は適当でOK。
# 接続確認
$ ssh -T git@github.com
Hi!って言われたら完了
Jenkinsで認証情報を設定
ソースコード管理でGitを選択し、「リポジトリURL」に扱いたいリポジトリのURLを入れる(git@github:[GitHubユーザー名]/[リポジトリ名]
形式のもの)
認証情報の右側のボタンから「追加」をクリックして下記のような画面にする。
下記のように入力する。
項目 | 内容 |
---|---|
Domain | グローバルドメイン |
種類 | SSHユーザー名と秘密鍵 |
スコープ | グローバル |
ID | 区別するためのものなのでなんでもいい |
説明 | なんでもいい |
ユーザー名 | 認証情報の選択画面ででる名前 |
秘密鍵 | 後述 |
パスフレーズ |
$ ssh-keygen で設定したパスワード |
秘密鍵を直接入力する
あるバージョンから「直接入力」しか選択できなくなったようです。入力する内容は「秘密鍵の内容」です。「秘密鍵のパス」ではないので注意してください。
# 秘密鍵をクリップボードにコピー(Macの場合)
$ pbcopy < ~/.ssh/id_rsa
# 秘密鍵をクリップボードにコピー(Winの場合)
$ clip < ~/.ssh/id_rsa
上記コマンドでコピーしたのち、入力欄にペーストしてください。
最後に追加ボタンを押してください。
認証情報を選択する
追加しただけだと認証情報が適用されていません。認証情報のプルダウンに先ほど追加した項目が追加されていると思うので、それを選択してください。Jenkinsが自動的に接続確認コマンドを叩いてくれるので、数秒待って赤いエラー表示がされなければ完了です。