そういうのがいいブログ

SIerで働く30代サラリーマンSEがインフラエンジニアに憧れてLinux・クラウド・AWSの勉強をするブログ

【Jenkins運用基本】JenkinsサーバからGitLabサーバにSSH接続の設定

※[PR]当ブログの記事の中にはプロモーションが含まれています。

JenkinsサーバからGitLabサーバにSSH接続

・JenkinsサーバからGitLabサーバにSSH接続できるようにしたい。
・具体的な手順を教えてほしい。

こういった疑問に答えます。

本記事の内容

  1. JenkinsサーバからGitLabサーバにSSH接続する設定

この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。

こういった私が、解説していきます。

私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。

JenkinsサーバからGitLabサーバにSSH接続する設定手順

  1. JenkinsサーバでSSH秘密鍵ファイルと公開鍵ファイル作成
  2. GitLabサーバ側で公開鍵ファイルを準備
  3. JenkinsサーバからGitLabサーバへSSH接続できるかテスト
  4. Jenkins管理画面でSSH認証情報の設定
  5. Jenkins管理画面で管理ノードにGitLabサーバを追加

前提

今回の構成イメージ図は以下です。

JenkinsサーバからGitLabサーバにSSH接続

手順①: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]-----+

JenkinsサーバからGitLabサーバにSSH接続

手順②: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 118 12:14 authorized_keys

Jenkinsサーバで作成した公開鍵ファイルをFTPでアップロード

Jenkinsの管理ノードに外部サーバを追加

公開鍵ファイルの中身を「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 118 12:15 authorized_keys
-rw-rw-r-- 1 jenkins jenkins 396 117 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 118 12:15 authorized_keys

JenkinsサーバからGitLabサーバにSSH接続

手順③: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

JenkinsサーバからGitLabサーバにSSH接続

「global」のドメインをクリック

JenkinsサーバからGitLabサーバにSSH接続

「認証情報の追加」をクリック

JenkinsサーバからGitLabサーバにSSH接続

認証情報の内容を入力する

JenkinsサーバからGitLabサーバにSSH接続

秘密鍵は「直接入力」で、Jenkinsサーバで作成した「id_rsa」ファイルを開いて丸ごとコピーして貼り付けます。

JenkinsサーバからGitLabサーバにSSH接続

認証情報の追加が完了。

JenkinsサーバからGitLabサーバにSSH接続

手順⑤:Jenkins管理画面で管理ノードにGitLabサーバを追加

「ノードの管理」をクリック

JenkinsサーバからGitLabサーバにSSH接続

新規ノード作成 をクリック

JenkinsサーバからGitLabサーバにSSH接続

ノード名にホスト名を入力して、「Permanent Agent」を選択して「OK」をクリック

JenkinsサーバからGitLabサーバにSSH接続

管理対象サーバの情報を入力します。

  • ノード名:ホスト名
  • 説明:てきとうでOK
  • リモートFSルート:管理対象サーバ側のjenkinsユーザーのホームディレクト
  • ラベル:ホスト名と同じにしました
  • 用途:このマシーンを特定ジョブ専用にする
  • 起動方法:SSH経由でUnixマシンのスレーブエージェントを起動
  • ホスト:ホスト名
  • 認証情報:前の手順で作成しておいたSSH秘密鍵認証が選択できるようになっています
  • Host Key Verification Strategy:Known hosts file Verification Strategy
  • 可用性:Keep this agent online as much as possible

一通り入力したら一番下の「保存」ボタンをクリック。

JenkinsサーバからGitLabサーバにSSH接続

ノードの一覧にGitLabサーバが追加された

JenkinsサーバからGitLabサーバにSSH接続

[改訂第3版]Jenkins実践入門
ビルド・テスト・デプロイを自動化する技術
WEB+DB PRESS plus

インフラエンジニアの勉強ができるオンライン学習サイト

Udemy (オンライン動画学習サイト)

Udemy(ユーデミー)は、オンラインで動画で学習できるサービスです。
ITエンジニア系の講座もたくさん公開されています。

≫Udemy 世界最大級のオンライン学習サイト

Udemyの特徴
  • ユーザー登録すれば、第1回の講座は無料で視聴できる
  • 無料のコンテンツもある
  • 過去に受講した人の人数や、受講した人の評価も表示されるので選びやすい

≫Udemy 世界最大級のオンライン学習サイト

開発の人気オンラインコース