・JenkinsサーバからGitLabサーバにSSH接続できるようにしたい。
・具体的な手順を教えてほしい。
こういった疑問に答えます。
本記事の内容
- JenkinsサーバからGitLabサーバにSSH接続する設定
この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
こういった私が、解説していきます。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
- 本記事の内容
- JenkinsサーバからGitLabサーバにSSH接続する設定手順
JenkinsサーバからGitLabサーバにSSH接続する設定手順
- JenkinsサーバでSSH秘密鍵ファイルと公開鍵ファイル作成
- GitLabサーバ側で公開鍵ファイルを準備
- JenkinsサーバからGitLabサーバへSSH接続できるかテスト
- Jenkins管理画面でSSH認証情報の設定
- Jenkins管理画面で管理ノードにGitLabサーバを追加
前提
今回の構成イメージ図は以下です。
手順①:JenkinsサーバでSSH秘密鍵ファイルと公開鍵ファイル作成
cd /var/lib/jenkins
mkdir .ssh
cd /var/lib/jenkins/.ssh
[root@SV-SATURN ~]# cd /var/lib/jenkins [root@SV-SATURN jenkins]# mkdir .ssh [root@SV-SATURN jenkins]# cd /var/lib/jenkins/.ssh
ssh-keygen
[root@SV-SATURN .ssh]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /var/lib/jenkins/.ssh/id_rsa Enter passphrase (empty for no passphrase): ★★★秘密鍵のパスフレーズ Enter same passphrase again: ★★★秘密鍵のパスフレーズ Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa. Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub. The key fingerprint is: SHA256:uFh62iMHkG8BTBvSiCxm1utvVQMpxKSPuzbkV7+kJLA root@SV-SATURN The key's randomart image is: +---[RSA 2048]----+ |+=+ +o . | (途中省略) | ..=o.o .. | +----[SHA256]-----+
手順②:GitLabサーバ側で公開鍵ファイルを準備
「jenkins」というユーザーを作成
useradd jenkins
passwd jenkins
[root@SV-MARS ~]# useradd jenkins [root@SV-MARS ~]# passwd jenkins ユーザー jenkins のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。
authorized_keysファイル作成
mkdir ~/.ssh
cd ~/.ssh
touch authorized_keys
[jenkins@SV-MARS ~]$ mkdir ~/.ssh [jenkins@SV-MARS ~]$ cd ~/.ssh [jenkins@SV-MARS .ssh]$ touch authorized_keys [jenkins@SV-MARS .ssh]$ ls -l 合計 0 -rw-rw-r-- 1 jenkins jenkins 0 11月 8 12:14 authorized_keys
Jenkinsサーバで作成した公開鍵ファイルをFTPでアップロード
公開鍵ファイルの中身を「authorized_keys」に追記
cat id_rsa.pub >> authorized_keys
[jenkins@SV-MARS .ssh]$ cat id_rsa.pub >> authorized_keys [jenkins@SV-MARS .ssh]$ ls -l 合計 8 -rw-rw-r-- 1 jenkins jenkins 396 11月 8 12:15 authorized_keys -rw-rw-r-- 1 jenkins jenkins 396 11月 7 20:06 id_rsa.pub
アップロードした公開鍵ファイルはもう不要なので削除
rm id_rsa.pub
[jenkins@sv-neptune .ssh]$ rm id_rsa.pub
権限変更
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
[jenkins@SV-MARS .ssh]$ chmod 700 ~/.ssh [jenkins@SV-MARS .ssh]$ chmod 600 ~/.ssh/authorized_keys [jenkins@SV-MARS .ssh]$ ls -l 合計 4 -rw------- 1 jenkins jenkins 396 11月 8 12:15 authorized_keys
手順③:JenkinsサーバからGitLabサーバへSSH接続できるかテスト
事前にjenkinsユーザーのログインシェルを変更しておく
[root@SV-SATURN ~]# chsh jenkins jenkins のシェルを変更します。 新しいシェル [/bin/false]: /bin/bash シェルを変更しました。
jenkinsユーザーに切り替え
su - jenkins
[root@SV-SATURN .ssh]# su - jenkins 最終ログイン: 2020/11/08 (日) 09:57:59 JST pc-ganymedeから開始日時 pts/0
jenkinsサーバからGitLabサーバへSSH接続
ssh -i ~/.ssh/id_rsa jenkins@sv-mars
-bash-4.2$ ssh -i ~/.ssh/id_rsa jenkins@sv-mars The authenticity of host 'sv-mars (192.168.1.114)' can't be established. ECDSA key fingerprint is SHA256:4IkZ7wwyjeEW7Rf3PtKey4Ah3nUa7WA2qHVbzur81X0. ECDSA key fingerprint is MD5:da:13:d1:5d:82:13:a2:2c:a7:dc:46:ca:1c:fc:2a:c4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'sv-mars,192.168.1.114' (ECDSA) to the list of known hosts. Enter passphrase for key '/var/lib/jenkins/.ssh/id_rsa': ################################################## # # .MMMp .MMM] .MMMb MMMMMMMMm. .JMMMMMMM]. # .MMMM| .MMMM] .MM@MMb MMM (MM% gMM,. .'. # .MM[MM+M@(MM] dM@ JMM, MMM((JMMD .WMMMMMN&.. # .MM).MM# (MM] .MMNggMMN. MMM"TMMm. . ?7TMMN. # .MM) (MM] .MMf~~~?MMb MMM ,MMN, dNg...(MMt. # .""' ,""' 7"" ?""! 7"" """^ ?"""""! . # # SV-MARS [192.168.1.114] CentOS8.2 # GitLab # ################################################## Last login: Sun Nov 8 12:13:37 2020 [jenkins@SV-MARS ~]$
手順④:Jenkins管理画面でSSH認証情報の設定
Jenkinsの管理>Manage Credentials
「global」のドメインをクリック
「認証情報の追加」をクリック
認証情報の内容を入力する
- 種類:SSHユーザー名と秘密鍵
- スコープ:グローバル
- ID:jenkins
- 説明:てきとうでOK
- ユーザー名:jenkins
- 秘密鍵:直接入力で「Add」ボタンをクリック
- パスフレーズ:秘密鍵ファイル作成時に設定したパスフレーズ
秘密鍵は「直接入力」で、Jenkinsサーバで作成した「id_rsa」ファイルを開いて丸ごとコピーして貼り付けます。
認証情報の追加が完了。
手順⑤:Jenkins管理画面で管理ノードにGitLabサーバを追加
「ノードの管理」をクリック
新規ノード作成 をクリック
ノード名にホスト名を入力して、「Permanent Agent」を選択して「OK」をクリック
管理対象サーバの情報を入力します。
- ノード名:ホスト名
- 説明:てきとうでOK
- リモートFSルート:管理対象サーバ側のjenkinsユーザーのホームディレクトリ
- ラベル:ホスト名と同じにしました
- 用途:このマシーンを特定ジョブ専用にする
- 起動方法:SSH経由でUnixマシンのスレーブエージェントを起動
- ホスト:ホスト名
- 認証情報:前の手順で作成しておいたSSH秘密鍵認証が選択できるようになっています
- Host Key Verification Strategy:Known hosts file Verification Strategy
- 可用性:Keep this agent online as much as possible
一通り入力したら一番下の「保存」ボタンをクリック。
ノードの一覧にGitLabサーバが追加された
[改訂第3版]Jenkins実践入門 ビルド・テスト・デプロイを自動化する技術 WEB+DB PRESS plus |
インフラエンジニアの勉強ができるオンライン学習サイト
Udemy (オンライン動画学習サイト)
Udemy(ユーデミー)は、オンラインで動画で学習できるサービスです。
ITエンジニア系の講座もたくさん公開されています。
Udemyの特徴
- ユーザー登録すれば、第1回の講座は無料で視聴できる
- 無料のコンテンツもある
- 過去に受講した人の人数や、受講した人の評価も表示されるので選びやすい