As software projects grow in complexity and scale, executing all continuous integration builds on a single Jenkins controller node creates CPU, memory, and disk bottlenecks. To achieve horizontal scalability and workload isolation, Jenkins supports a Distributed Build Architecture using Agent Nodes (formerly known as Slaves).
In this architecture:
slave.jar / agent.jar) on the agent over an SSH channel.stapp01, stapp02, stapp03) allow pipeline jobs to target specific application environments or infrastructure types.graph TD
subgraph ControllerLayer ["Jenkins Controller"]
UI["Jenkins Web UI / Scheduler"]
AgentPlugin["SSH Build Agents Plugin"]
end
subgraph AppServer1 ["App Server 1: stapp01"]
JVM1["Java 17 OpenJDK Runtime"]
Remoting1["Jenkins Agent Process<br/>Remote Root: /home/tony/jenkins"]
end
subgraph AppServer2 ["App Server 2: stapp02"]
JVM2["Java 17 OpenJDK Runtime"]
Remoting2["Jenkins Agent Process<br/>Remote Root: /home/steve/jenkins"]
end
subgraph AppServer3 ["App Server 3: stapp03"]
JVM3["Java 17 OpenJDK Runtime"]
Remoting3["Jenkins Agent Process<br/>Remote Root: /home/banner/jenkins"]
end
UI -->|"Dispatches Jobs"| AgentPlugin
AgentPlugin -->|"1. SSH Connection - User: tony"| Remoting1
AgentPlugin -->|"2. SSH Connection - User: steve"| Remoting2
AgentPlugin -->|"3. SSH Connection - User: banner"| Remoting3
Remoting1 --- JVM1
Remoting2 --- JVM2
Remoting3 --- JVM3
When a node configured with the Launch agents via SSH method is initialized:
22 using SSH credentials.remoting.jar binary inside the node’s Remote root directory.java -jar remoting.jar on the remote host, establishing a bidirectional channel between controller and agent.Jenkins version 2.357+ requires Java 17 for both controller and agent remoting processes. If Java 17 is missing on the remote agent node, the SSH connection attempt will fail with java: command not found or Java version mismatch errors.
Each agent node defines an isolated workspace root:
App_server_1: /home/tony/jenkinsApp_server_2: /home/steve/jenkinsApp_server_3: /home/banner/jenkinsAll build checkouts, temporary artifacts, and workspace files for jobs assigned to a specific node are scoped within its designated root directory.
8080admin / Adm!n321SSH Build Agents| Node Name | Hostname / IP | Label | Remote Root Directory | SSH Username | SSH Password |
|---|---|---|---|---|---|
App_server_1 |
stapp01 |
stapp01 |
/home/tony/jenkins |
tony |
Ir0nMan |
App_server_2 |
stapp02 |
stapp02 |
/home/steve/jenkins |
steve |
Am3r!ca |
App_server_3 |
stapp03 |
stapp03 |
/home/banner/jenkins |
banner |
BigBanner |
Before adding the nodes in Jenkins UI, install Java 17 OpenJDK on stapp01, stapp02, and stapp03 so the Jenkins agent remoting process can execute successfully:
stapp01):
ssh tony@stapp01
sudo dnf install -y java-17-openjdk-devel
java -version
stapp02):
ssh steve@stapp02
sudo dnf install -y java-17-openjdk-devel
java -version
stapp03):
ssh banner@stapp03
sudo dnf install -y java-17-openjdk-devel
java -version
adminAdm!n321
Upon successful authentication, verify access to the main landing page:

From the left navigation sidebar, click Manage Jenkins:

ssh build agents.

admin.
View the Nodes overview list showing the default Built-In Node. Click + New Node:

App_server_1 Node SettingsApp_server_1.1/home/tony/jenkinsstapp01Use this node as much as possible
stapp01.
tonytonyIr0nMan
tony/******.Non verifying Verification Strategy.Keep this agent online as much as possible.
App_server_1 is added to the Nodes list and starts launching the agent connection:

Click on App_server_1 to monitor the SSH launch sequence and JVM initialization:

App_server_1 Online and SynchronizedVerify that App_server_1 establishes the remoting connection and displays online status (In sync):

App_server_2 and App_server_3 & Verify All Nodes OnlineRepeat Steps 8–11 for the remaining two servers:
App_server_2:App_server_2/home/steve/jenkinsstapp02stapp02steve / Password Am3r!caApp_server_3:App_server_3/home/banner/jenkinsstapp03stapp03banner / Password BigBannerConfirm that all three agent nodes (App_server_1, App_server_2, App_server_3) are connected, synchronized, and online:

All three App Server SSH agent nodes are now successfully added, verified online, and ready for distributed job execution!