以下の内容はhttps://souiunogaii.hatenablog.com/entry/jenkins25-add-nodeより取得しました。


Jenkins2.5に外部サーバを管理ノードとして追加する手順

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

・Jenkins2.5の管理ノードに外部サーバを追加したい。
・具体的な手順を教えてほしい。

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

本記事の内容

  1. Jenkins2.5に外部サーバを管理ノードとして追加する手順

サトナカ (@souiunogaii)

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

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

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

Jenkins2.5に外部サーバを管理ノードとして追加する手順

今回の構成イメージ図

JenkinsサーバでSSH秘密鍵ファイルと公開鍵ファイル作成

.sshディレクトリ作成

/var/lib/jenkins/.ssh
[root@a-jenks01 ~]# cd /var/lib/jenkins
[root@a-jenks01 jenkins]# mkdir .ssh
[root@a-jenks01 jenkins]# cd ./.ssh

鍵ファイル作成

ssh-keygen
[root@a-jenks01 .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:zvGtdSHETg9duaxyQG6UYxaerf+5XDXCMZ/5jwG7cWg root@a-jenks01
The key's randomart image is:
+---[RSA 3072]----+
|           .o   o|
|          .Oo. o |
|          *o*+o .|
|           Boo+oo|
|        S ..=o+=.|
|       o o o.B..+|
|        o . E.+ o|
|           + =oo+|
|          . . .=o|
+----[SHA256]-----+

管理対象となるWEBサーバー側で公開鍵ファイルを設定

jenkinsユーザー作成

[root@a-webap01 ~]# useradd jenkins
[root@a-webap01 ~]# id jenkins
uid=1002(jenkins) gid=1002(jenkins) groups=1002(jenkins)

jenkinsユーザーのホームディレクトリに.sshディレクトリを作成

/home/jenkins/.ssh
[root@a-webap01 ~]# su - jenkins
[jenkins@a-webap01 ~]$ mkdir ~/.ssh
[jenkins@a-webap01 ~]$ cd ~/.ssh

authorized_keysファイルを作成

[jenkins@a-webap01 .ssh]$ touch authorized_keys
[jenkins@a-webap01 .ssh]$ ll
合計 0
-rw-r--r-- 1 jenkins jenkins 0  93 17:12 authorized_keys

Jenkinsサーバー側の公開鍵をWEBサーバー側にコピー

[jenkins@a-webap01 .ssh]$ ll
合計 4
-rw-r--r-- 1 jenkins jenkins   0  93 17:12 authorized_keys
-rw-r--r-- 1 root    root    568  93 17:06 id_rsa.pub

Jenkinsサーバーの公開鍵ファイルid_rsa.pubの中身を外部サーバー側の公開鍵authorized_keysに追記

[jenkins@a-webap01 .ssh]$ cat id_rsa.pub >> authorized_keys

作業後に,公開鍵id_rsa.pubは削除

[jenkins@a-webap01 .ssh]$ rm id_rsa.pub
rm: 書き込み保護されたファイル 通常ファイル 'id_rsa.pub' を削除しますか?y

パーミッション変更

[jenkins@a-webap01 .ssh]$ chmod 700 ~/.ssh
[jenkins@a-webap01 .ssh]$ chmod 600 ~/.ssh/authorized_keys

JenkinsサーバーからWEBサーバーへSSH接続できるかテスト

[root@a-jenks01 ~]# ssh -i /var/lib/jenkins/.ssh/id_rsa jenkins@a-webap01
The authenticity of host 'a-webap01 (192.168.100.122)' can't be established.
ED25519 key fingerprint is SHA256:1RwwlHDaguQNW98y7b5XaVy69oipFYg6YXrK0AEHM98.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes  ←★★★yes
Warning: Permanently added 'a-webap01' (ED25519) to the list of known hosts.
Enter passphrase for key '/var/lib/jenkins/.ssh/id_rsa': ←★★★パスフレーズ
Last login: Wed Sep  3 17:11:40 2025
[jenkins@a-webap01 ~]$  ←★★★接続に成功!
[jenkins@a-webap01 ~]$
[jenkins@a-webap01 ~]$
[jenkins@a-webap01 ~]$
[jenkins@a-webap01 ~]$ exit
ログアウト
Connection to a-webap01 closed.
[root@a-jenks01 ~]#

Jenkins管理画面でSSH認証情報の設定

Jenkinsの管理 > Credentials > Domain(global) > Add Credentials

種類:SSHユーザー名と秘密鍵

「直接入力」でJenkinsサーバーの秘密鍵「id_rsa」のファイルの中身を丸ごとコピー&貼り付け。

認証情報が登録できた。

Jenkins管理画面で管理ノードにWEBサーバを追加

接続エラー

SSHLauncher{host='a-webap01', port=22, credentialsId='jenkins', jvmOptions='', javaPath='', prefixStartSlaveCmd='', suffixStartSlaveCmd='', launchTimeoutSeconds=60, maxNumRetries=10, retryWaitTime=15, sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.KnownHostsFileKeyVerificationStrategy, tcpNoDelay=true, trackCredentials=true}
[09/03/25 17:26:32] [SSH] a-webap01:22とのSSHコネクションをオープン
/var/lib/jenkins/.ssh/known_hosts [SSH] No Known Hosts file was found at /var/lib/jenkins/.ssh/known_hosts. Please ensure one is created at this path and that Jenkins can read it.
Key exchange was not finished, connection is closed.
SSH Connection failed with IOException: "Key exchange was not finished, connection is closed.", retrying in 15 seconds. There are 10 more retries left.

No Known Hosts file was found at /var/lib/jenkins/.ssh/known_hosts. というエラーが出ます。

JenkinsサーバのJenkinsユーザーのログインシェルを変更

chsh jenkins
[root@a-jenks01 ~]# cat /etc/passwd | grep jenkins
jenkins:x:992:991:Jenkins Automation Server:/var/lib/jenkins:/bin/false
[root@a-jenks01 ~]# chsh jenkins
jenkins のシェルを変更します。
新しいシェル [/bin/false]: /bin/bash
シェルを変更しました。

jenkinsユーザーでWEBサーバーへSSH接続してknownホストに追加

[root@a-jenks01 ~]# su - jenkins
[jenkins@a-jenks01 ~]$ ssh -i ~/.ssh/id_rsa jenkins@a-webap01
The authenticity of host 'a-webap01 (192.168.100.122)' can't be established.
ED25519 key fingerprint is SHA256:1RwwlHDaguQNW98y7b5XaVy69oipFYg6YXrK0AEHM98.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes ←★★★yes
Warning: Permanently added 'a-webap01' (ED25519) to the list of known hosts.
Enter passphrase for key '/var/lib/jenkins/.ssh/id_rsa': ←★★★パスフレーズ
Last login: Wed Sep  3 17:16:12 2025 from 192.168.100.126

known_hostsの確認

var/lib/jenkins/.ssh/known_hosts
a-webap01 ecdsa-sha2-nistp256 AAAAE2VjZH(中略)D3LRLal0CA=

javaのエラー

[09/03/25 17:35:27] [SSH] スレーブのプロセスを開始: cd "/home/jenkins" && java  -jar remoting.jar -workDir /home/jenkins -jar-cache /home/jenkins/remoting/jarCache
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: hudson/remoting/Launcher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:621)
Agent JVM has terminated. Exit code=1
[09/03/25 17:35:27] Launch failed - cleaning up connection
[09/03/25 17:35:27] [SSH] コネクション終了

java.lang.UnsupportedClassVersionError のエラーが出ます。

WEBサーバー側のJavaをバージョンアップ

変更前のバージョン確認

[satonaka@a-webap01 ~]$ java -version
openjdk version "1.8.0_462"
OpenJDK Runtime Environment (build 1.8.0_462-b08)
OpenJDK 64-Bit Server VM (build 25.462-b08, mixed mode)

java-21のインストール

[satonaka@a-webap01 ~]$ sudo dnf install java-21-openjdk
メタデータの期限切れの最終確認: 0:14:35 前の 20250903172743秒 に実施しました。
依存関係が解決しました。
====================================================================================================
 パッケージ                     Arch         バージョン                       リポジトリー    サイズ
====================================================================================================
インストール:
 java-21-openjdk                x86_64       1:21.0.8.0.9-1.el9.alma.1        appstream       452 k
依存関係のインストール:
 java-21-openjdk-headless       x86_64       1:21.0.8.0.9-1.el9.alma.1        appstream        48 M

トランザクションの概要
====================================================================================================
インストール  2 パッケージ

ダウンロードサイズの合計: 48 M
インストール後のサイズ: 215 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/2): java-21-openjdk-21.0.8.0.9-1.el9.alma.1.x86_64.rpm           1.6 MB/s | 452 kB     00:00
(2/2): java-21-openjdk-headless-21.0.8.0.9-1.el9.alma.1.x86_64.rpm  8.9 MB/s |  48 MB     00:05
----------------------------------------------------------------------------------------------------
合計                                                                8.0 MB/s |  48 MB     00:06
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
  scriptletの実行中: java-21-openjdk-headless-1:21.0.8.0.9-1.el9.alma.1.x86_64                  1/1
  準備中           :                                                                            1/1
  インストール中   : java-21-openjdk-headless-1:21.0.8.0.9-1.el9.alma.1.x86_64                  1/2
  scriptletの実行中: java-21-openjdk-headless-1:21.0.8.0.9-1.el9.alma.1.x86_64                  1/2
  インストール中   : java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64                           2/2
  scriptletの実行中: java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64                           2/2
  scriptletの実行中: java-21-openjdk-headless-1:21.0.8.0.9-1.el9.alma.1.x86_64                  2/2
  scriptletの実行中: java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64                           2/2
  検証中           : java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64                           1/2
  検証中           : java-21-openjdk-headless-1:21.0.8.0.9-1.el9.alma.1.x86_64                  2/2

インストール済み:
  java-21-openjdk-1:21.0.8.0.9-1.el9.alma.1.x86_64
  java-21-openjdk-headless-1:21.0.8.0.9-1.el9.alma.1.x86_64

完了しました!

バージョンの変更を適用

[satonaka@a-webap01 ~]$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.462.b08-3.el9.x86_64/jre/bin/java)
   2           java-21-openjdk.x86_64 (/usr/lib/jvm/java-21-openjdk-21.0.8.0.9-1.el9.alma.1.x86_64/bin/java)

Enter to keep the current selection[+], or type selection number: 2  ←★★★2を入力

変更後のバージョン確認

[satonaka@a-webap01 ~]$ java -version
openjdk version "21.0.8" 2025-07-15 LTS
OpenJDK Runtime Environment (Red_Hat-21.0.8.0.9-1) (build 21.0.8+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-21.0.8.0.9-1) (build 21.0.8+9-LTS, mixed mode, sharing)

ようやく接続に成功

[09/03/25 17:43:25] [SSH] スレーブのプロセスを開始: cd "/home/jenkins" && java  -jar remoting.jar -workDir /home/jenkins -jar-cache /home/jenkins/remoting/jarCache
9月 03, 2025 5:43:25 午後 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir
情報: Using /home/jenkins/remoting as a remoting work directory
9月 03, 2025 5:43:26 午後 org.jenkinsci.remoting.engine.WorkDirManager setupLogging
情報: Both error and output logs will be printed to /home/jenkins/remoting
<===[JENKINS REMOTING CAPACITY]===>channel started
Remoting version: 3309.v27b_9314fd1a_4
Launcher: SSHLauncher
Communication Protocol: Standard in/out
This is a Unix agent
Agent successfully connected and online

Agent successfully connected and online となり接続が成功しました。




以上の内容はhttps://souiunogaii.hatenablog.com/entry/jenkins25-add-nodeより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14