-
Bug
-
Resolution: Fixed
-
Critical
-
Versions:
Jenkins: 2.51
SSH Agent Plugin: 1.14
SSH Credentials plugin: 1.13
SSH Slaves Plugin : 1.15
Ubuntu 14.04, 16.04
SSH agent isn't launched after the latest update, complaining about missing records in the known hosts file.
Nevertheless, the records do exist. I've tried to connect manually with ssh, everything was fine, ssh reports that it has found the host in known_hosts.
Probable reason is the hashed host name in known_hosts.
Here is the log from the Jenkins slave launch page:
[03/21/17 11:40:34] [SSH] Opening SSH connection to xxx.xxx.xxx.xxx:22 [03/21/17 11:40:34] [SSH] WARNING: No entry currently exists in the Known Hosts file for this host. Connections will be denied until this new host and its associated key is added to the Known Hosts file. Key exchange was not finished, connection is closed. java.io.IOException: There was a problem while connecting to xxx.xxx.xxx.xxx:22 at com.trilead.ssh2.Connection.connect(Connection.java:818) at com.trilead.ssh2.Connection.connect(Connection.java:687) at com.trilead.ssh2.Connection.connect(Connection.java:601) at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:1265) at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:790) at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:785) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.IOException: Key exchange was not finished, connection is closed. at com.trilead.ssh2.transport.KexManager.getOrWaitForConnectionInfo(KexManager.java:93) at com.trilead.ssh2.transport.TransportManager.getConnectionInfo(TransportManager.java:230) at com.trilead.ssh2.Connection.connect(Connection.java:770) ... 9 more Caused by: java.io.IOException: The server hostkey was not accepted by the verifier callback at com.trilead.ssh2.transport.KexManager.handleMessage(KexManager.java:591) at com.trilead.ssh2.transport.TransportManager.receiveLoop(TransportManager.java:777) at com.trilead.ssh2.transport.TransportManager$1.run(TransportManager.java:489) ... 1 more [03/21/17 11:40:34] Launch failed - cleaning up connection [03/21/17 11:40:34] [SSH] Connection closed.
And this is the debug output from ssh, showing that it has found a record in the second line of known_hosts.
$ sudo -u jenkins -g jenkins ssh -v jenkins@xxx.xxx.xxx.xxx OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to xxx.xxx.xxx.xxx [xxx.xxx.xxx.xxx] port 22. debug1: Connection established. debug1: identity file /var/lib/jenkins/.ssh/id_rsa type 1 ... debug1: sending SSH2_MSG_KEX_ECDH_INIT debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ECDSA xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx debug1: Host 'xxx.xxx.xxx.xxx.xxx' is known and matches the ECDSA host key. debug1: Found key in /var/lib/jenkins/.ssh/known_hosts:2 debug1: ssh_ecdsa_verify: signature correct ... Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-67-generic x86_64)
Additional logs from Jenkins system log:
Mar 21, 2017 12:06:08 PM FINER com.trilead.ssh2.transport.KexManager kex_algo=diffie-hellman-group14-sha1 Mar 21, 2017 12:06:08 PM FINER com.trilead.ssh2.transport.KexManager server_host_key_algo=ssh-rsa Mar 21, 2017 12:06:08 PM FINER com.trilead.ssh2.transport.KexManager enc_algo_client_to_server=aes256-ctr Mar 21, 2017 12:06:08 PM FINER com.trilead.ssh2.transport.KexManager enc_algo_server_to_client=aes256-ctr Mar 21, 2017 12:06:08 PM FINER com.trilead.ssh2.transport.KexManager mac_algo_client_to_server=hmac-sha1 Mar 21, 2017 12:06:08 PM FINER com.trilead.ssh2.transport.KexManager mac_algo_server_to_client=hmac-sha1 Mar 21, 2017 12:06:08 PM FINER com.trilead.ssh2.transport.KexManager comp_algo_client_to_server=none Mar 21, 2017 12:06:08 PM FINER com.trilead.ssh2.transport.KexManager comp_algo_server_to_client=none Mar 21, 2017 12:06:08 PM FINE com.trilead.ssh2.transport.TransportManager Receive thread: error in receiveLoop java.io.IOException: The server hostkey was not accepted by the verifier callback at com.trilead.ssh2.transport.KexManager.handleMessage(KexManager.java:591) at com.trilead.ssh2.transport.TransportManager.receiveLoop(TransportManager.java:777) at com.trilead.ssh2.transport.TransportManager$1.run(TransportManager.java:489) at java.lang.Thread.run(Thread.java:745) Mar 21, 2017 12:06:08 PM FINER com.trilead.ssh2.transport.TransportManager Receive thread: back from receiveLoop Mar 21, 2017 12:06:10 PM FINER com.trilead.ssh2.transport.KexManager kex_algo=diffie-hellman-group14-sha1 Mar 21, 2017 12:06:10 PM FINER com.trilead.ssh2.transport.KexManager server_host_key_algo=ssh-rsa Mar 21, 2017 12:06:10 PM FINER com.trilead.ssh2.transport.KexManager enc_algo_client_to_server=aes256-ctr Mar 21, 2017 12:06:10 PM FINER com.trilead.ssh2.transport.KexManager enc_algo_server_to_client=aes256-ctr Mar 21, 2017 12:06:10 PM FINER com.trilead.ssh2.transport.KexManager mac_algo_client_to_server=hmac-sha1 Mar 21, 2017 12:06:10 PM FINER com.trilead.ssh2.transport.KexManager mac_algo_server_to_client=hmac-sha1 Mar 21, 2017 12:06:10 PM FINER com.trilead.ssh2.transport.KexManager comp_algo_client_to_server=none Mar 21, 2017 12:06:10 PM FINER com.trilead.ssh2.transport.KexManager comp_algo_server_to_client=none Mar 21, 2017 12:06:10 PM FINE com.trilead.ssh2.transport.TransportManager Receive thread: error in receiveLoop java.io.IOException: The server hostkey was not accepted by the verifier callback at com.trilead.ssh2.transport.KexManager.handleMessage(KexManager.java:591) at com.trilead.ssh2.transport.TransportManager.receiveLoop(TransportManager.java:777) at com.trilead.ssh2.transport.TransportManager$1.run(TransportManager.java:489) at java.lang.Thread.run(Thread.java:745) Mar 21, 2017 12:06:10 PM FINER com.trilead.ssh2.transport.TransportManager Receive thread: back from receiveLoop
File /var/lib/jenkins/.ssh/known_hosts contains strings, looking like being base64-encoded, delimited by '|'. Here is the sample.
|1|DAg ... o... 1ll9wI=| ... .... tIrM= ecdsa-sha2-nistp256 xxxxxx..... bmlzdHAyNTYAAAAIbm................. .................xxxxxxxxxxxoKEHF3Vr0q685jI2+6vWjvAAG4lz5Ckujy9k=
- is blocked by
-
JENKINS-44832 SSH Slaves plugin fails the host verification of slaves with an IllegalArgumentException
- Resolved
- is duplicated by
-
JENKINS-44803 Master 2.60.1-rc1 (2.58-2.64) ssh agents won't connect with "Manually provided key Verification Strategy"
- Closed
- relates to
-
JENKINS-44830 NullPointerException when upgrading to ssh-slaves 1.18
- Resolved
- links to