
・Jenkins2.5の管理ノードに外部サーバを追加したい。
・具体的な手順を教えてほしい。
こういった疑問に答えます。
本記事の内容
- Jenkins2.5に外部サーバを管理ノードとして追加する手順

この記事を書いている私は、某SIerに勤務しながら、
WEB系エンジニア・インフラエンジニアに憧れて、プログラミングおよびインフラ技術の勉強をしています。
こういった私が、解説していきます。
私が実機で試したコマンドや画像を載せて書いています。
記事の信頼性担保に繋がると思います。
- 本記事の内容
- Jenkins2.5に外部サーバを管理ノードとして追加する手順
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 9月 3 17:12 authorized_keys
Jenkinsサーバー側の公開鍵をWEBサーバー側にコピー

[jenkins@a-webap01 .ssh]$ ll 合計 4 -rw-r--r-- 1 jenkins jenkins 0 9月 3 17:12 authorized_keys -rw-r--r-- 1 root root 568 9月 3 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





「直接入力」で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 前の 2025年09月03日 17時27分43秒 に実施しました。 依存関係が解決しました。 ==================================================================================================== パッケージ 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 となり接続が成功しました。
