dockerjenkinsssh

Jenkins controller can't connect to the agent


I'm trying out Jenkins and its been fun so far. I've been able to build a pipeline, pair it to my Github etc. Now I am trying to create an agent and connect with my controller but I'm getting connection refused.

My Jenkins controller is hosted locally on a docker container and I have a container running for the agent as well. I used this doc for reference: https://www.jenkins.io/doc/book/using/using-agents/

I suspect maybe a SSH service issue or maybe my ssh keys are messed up. Although the sshd is running on the agent:

43b3773b:/home/jenkins/.ssh# ps -ef
PID   USER     TIME  COMMAND
    1 root      0:00 sshd: /usr/sbin/sshd -D -e [listener] 0 of 10-100 startups

And I have the jenkins controller pub key in authorized_keys:

a81443b3773b:/home/jenkins# cat .ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCjM++SY8rWLrLYVaNgVvs+kGy3s0CSFY7TzxvF1V4hfvUs0KHX6Ej3fZStLMst1YgKV0hWiB9LhpT5ViFdjylw31K9BEGDFonpOq6PxzyfhzX0JmWw/69RgK8YGTc5+FRXrB3n4g0Z0X2WStEVtttjVuS266h4iQlsBLY8Lxho76Vj2k/x6ofuoqgQuLsshMCG+VEpXXnqxBzXQqtKoBQlIuZdmQ4iFkk2S0dKyIe9XCZzlwiKXGOeKIdJsRHJ9vf+cLk5RNjyRE0ZumWdqtXX/VdSvqAJI+dzmnNVl4Exo5S403E9OKbko5iAbOWMZkZ4NvHt6lXrlzoXMUcQWEoRQ8U66bJMkjDt8s6jbtc3K0CPzYxjBiJpoAA1DdnfDvvnHhingu6TJDA9BqQkB8EcGRqKXML1gHMGhJ2alQzxwgWdTJQzURh8FiO3m1oWZnjXaKMLhMe/egmyWxjrM48ijr0f4my8oB8gjc3ftr2Zy6FasLNePagouzXEXxWVlUc= jenkins@4cfbfa97f71d

This is the command I used to start the agent:

docker run -d --rm --name=agent1 -p 4444:22 -e "JENKINS_AGENT_SSH_PUBKEY=ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCjM++SY8rWLrLYVaNgVvs+kGy3s0CSFY7TzxvF1V4hfvUs0KHX6Ej3fZStLMst1YgKV0hWiB9LhpT5ViFdjylw31K9BEGDFonpOq6PxzyfhzX0JmWw/69RgK8YGTc5+FRXrB3n4g0Z0X2WStEVtttjVuS266h4iQlsBLY8Lxho76Vj2k/x6ofuoqgQuLsshMCG+VEpXXnqxBzXQqtKoBQlIuZdmQ4iFkk2S0dKyIe9XCZzlwiKXGOeKIdJsRHJ9vf+cLk5RNjyRE0ZumWdqtXX/VdSvqAJI+dzmnNVl4Exo5S403E9OKbko5iAbOWMZkZ4NvHt6lXrlzoXMUcQWEoRQ8U66bJMkjDt8s6jbtc3K0CPzYxjBiJpoAA1DdnfDvvnHhingu6TJDA9BqQkB8EcGRqKXML1gHMGhJ2alQzxwgWdTJQzURh8FiO3m1oWZnjXaKMLhMe/egmyWxjrM48ijr0f4my8oB8gjc3ftr2Zy6FasLNePagouzXEXxWVlUc= jenkins@4cfbfa97f71d" jenkins/ssh-agent:alpine-jdk17

The pubkey is of my Jenkins controller.

On my localhost port 4444 is open.

This is the error I get in Jenkins agent log:

SSHLauncher{host='0.0.0.0', port=4444, credentialsId='jenkins2', jvmOptions='', javaPath='', prefixStartSlaveCmd='', suffixStartSlaveCmd='', launchTimeoutSeconds=60, maxNumRetries=10, retryWaitTime=2, sshHostKeyVerificationStrategy=hudson.plugins.sshslaves.verifiers.ManuallyTrustedKeyVerificationStrategy, tcpNoDelay=true, trackCredentials=true}
[12/04/23 18:42:20] [SSH] Opening SSH connection to 0.0.0.0:4444.
Connection refused
SSH Connection failed with IOException: "Connection refused", retrying in 2 seconds. There are 10 more retries left.
Connection refused

Here are my containers btw:

CONTAINER ID   IMAGE                            COMMAND                  CREATED          STATUS          PORTS                                                                                      NAMES
a81443b3773b   jenkins/ssh-agent:alpine-jdk17   "setup-sshd"             48 minutes ago   Up 41 minutes   0.0.0.0:4444->22/tcp, :::4444->22/tcp                                                      agent1
4cfbfa97f71d   jenkins/jenkins:lts              "/usr/bin/tini -- /u…"   5 days ago       Up 55 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp   brave_pascal

Any help is greatly appreciated :)


Solution

  • Was able to get it working. Had to use the IP of the agent container and port 22 instead of 4444.