[JIRA] [ssh-credentials-plugin] (JENKINS-31549) sshcredentials via trilead-ssh2 Cannot Connect to Servers Requiring Strong MACs

4 views
Skip to first unread message

sheatomsin@gmail.com (JIRA)

unread,
Nov 13, 2015, 1:44:02 PM11/13/15
to jenkinsc...@googlegroups.com
Shea Tomsin created an issue
 
Jenkins / Bug JENKINS-31549
sshcredentials via trilead-ssh2 Cannot Connect to Servers Requiring Strong MACs
Issue Type: Bug Bug
Assignee: stephenconnolly
Components: ssh-credentials-plugin
Created: 13/Nov/15 6:43 PM
Environment: Jenkins 1.638; SSH Credentials Plugin 1.11; CentOS 7.1.1503; openjdk 1.8
Priority: Minor Minor
Reporter: Shea Tomsin

master cannot connect to slave

/var/log/secure on slave reports
sshd[1978]: fatal: no matching mac found: client hmac-sha1-96,hmac-sha1,hmac-md5-96,hmac-md5 server hmac-sha2-512,hmac-sha2-256,hmac-ripemd160

master reports

Key exchange was not finished, connection is closed.
ERROR: Unexpected error in launching a slave. This is probably a bug in Jenkins.
java.lang.IllegalStateException: Connection is not established!
	at com.trilead.ssh2.Connection.getRemainingAuthMethods(Connection.java:1030)
	at com.cloudbees.jenkins.plugins.sshcredentials.impl.TrileadSSHPublicKeyAuthenticator.getRemainingAuthMethods(TrileadSSHPublicKeyAuthenticator.java:88)
	at com.cloudbees.jenkins.plugins.sshcredentials.impl.TrileadSSHPublicKeyAuthenticator.canAuthenticate(TrileadSSHPublicKeyAuthenticator.java:80)
	at com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.newInstance(SSHAuthenticator.java:207)
	at com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.newInstance(SSHAuthenticator.java:169)
	at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:1212)
	at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:711)
	at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:706)
	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)

This is related to JENKINS-26379 but the comments in that ticket only hint at the issue which, to writ, is:
https://github.com/jenkinsci/trilead-ssh2/blob/master/src/com/trilead/ssh2/crypto/digest/MAC.java

com.trilead.ssh2.crypto.digest/MAC.java
	public final static String[] getMacList()
	{
		/* Higher Priority First */

		return new String[] { "hmac-sha1-96", "hmac-sha1", "hmac-md5-96", "hmac-md5" };
	}

See https://stribika.github.io/2015/01/04/secure-secure-shell.html

Here are the available MAC choices:

hmac-md5
hmac-md5-96
hmac-ripemd160
hmac-sha1
hmac-sha1-96
hmac-sha2-256
hmac-sha2-512
umac-64
umac-128
hmac-m...@openssh.com
hmac-md...@openssh.com
hmac-ripe...@openssh.com
hmac-s...@openssh.com
hmac-sha...@openssh.com
hmac-sha...@openssh.com
hmac-sha...@openssh.com
umac-...@openssh.com
umac-1...@openssh.com
The selection considerations:

Security of the hash algorithm: No MD5 and SHA1. Yes, I know that HMAC-SHA1 does not need collision resistance but why wait? Disable weak crypto today.
Encrypt-then-MAC: I am not aware of a security proof for CTR-and-HMAC but I also don't think CTR decryption can fail. Since there are no downgrade attacks, you can add them to the end of the list. You can also do this on a host by host basis so you know which ones are less safe.
Tag size: At least 128 bits. This eliminates umac-64-etm.
Key size: At least 128 bits. This doesn't eliminate anything at this point.
Recommended /etc/ssh/sshd_config snippet:

Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v6.4.2#64017-sha1:e244265)
Atlassian logo

sheatomsin@gmail.com (JIRA)

unread,
Nov 13, 2015, 1:45:01 PM11/13/15
to jenkinsc...@googlegroups.com
Shea Tomsin updated an issue
Change By: Shea Tomsin
master cannot connect to slave
{code:none|title=/var/log/secure on slave reports}

sshd[1978]: fatal: no matching mac found: client hmac-sha1-96,hmac-sha1,hmac-md5-96,hmac-md5 server hmac-sha2-512,hmac-sha2-256,hmac-ripemd160
{code}

master reports
{code:none}

Key exchange was not finished, connection is closed.
ERROR: Unexpected error in launching a slave. This is probably a bug in Jenkins.
java.lang.IllegalStateException: Connection is not established!
at com.trilead.ssh2.Connection.getRemainingAuthMethods(Connection.java:1030)
at com.cloudbees.jenkins.plugins.sshcredentials.impl.TrileadSSHPublicKeyAuthenticator.getRemainingAuthMethods(TrileadSSHPublicKeyAuthenticator.java:88)
at com.cloudbees.jenkins.plugins.sshcredentials.impl.TrileadSSHPublicKeyAuthenticator.canAuthenticate(TrileadSSHPublicKeyAuthenticator.java:80)
at com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.newInstance(SSHAuthenticator.java:207)
at com.cloudbees.jenkins.plugins.sshcredentials.SSHAuthenticator.newInstance(SSHAuthenticator.java:169)
at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:1212)
at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:711)
at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:706)
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)
{code}


This is related to JENKINS-26379 but the comments in that ticket only hint at the issue which, to writ, is:
https://github.com/jenkinsci/trilead-ssh2/blob/master/src/com/trilead/ssh2/crypto/digest/MAC.java
{code:none|title=com.trilead.ssh2.crypto.digest / . MAC.java}

public final static String[] getMacList()
{
/* Higher Priority First */

return new String[] { "hmac-sha1-96", "hmac-sha1", "hmac-md5-96", "hmac-md5" };
}
{code:none}
MACs hmac-sha...@openssh.com,hmac-sha...@openssh.com,hmac-ripe...@openssh.com,umac-1...@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac...@openssh.com
{code}
{quote}

sheatomsin@gmail.com (JIRA)

unread,
Nov 13, 2015, 1:46:02 PM11/13/15
to jenkinsc...@googlegroups.com
{code:none|title=com.trilead.ssh2.crypto.digest.MAC .java }

sheatomsin@gmail.com (JIRA)

unread,
Nov 13, 2015, 1:48:01 PM11/13/15
to jenkinsc...@googlegroups.com
Shea Tomsin commented on Bug JENKINS-31549
 
Re: sshcredentials via trilead-ssh2 Cannot Connect to Servers Requiring Strong MACs

I checked:

project = JENKINS AND status in (Open, "In Progress", Reopened) AND component = 'ssh-credentials-plugin' and (text ~ mac or text ~ auth)  

before I created this ticket

stephenconnolly@java.net (JIRA)

unread,
Jun 17, 2016, 7:18:01 AM6/17/16
to jenkinsc...@googlegroups.com
stephenconnolly updated an issue
 
Change By: stephenconnolly
Component/s: ssh-slaves-plugin
Component/s: ssh-credentials-plugin
This message was sent by Atlassian JIRA (v7.1.7#71011-sha1:2526d7c)
Atlassian logo

stephenconnolly@java.net (JIRA)

unread,
Jun 17, 2016, 7:19:01 AM6/17/16
to jenkinsc...@googlegroups.com

stephenconnolly@java.net (JIRA)

unread,
Jun 17, 2016, 7:19:02 AM6/17/16
to jenkinsc...@googlegroups.com
stephenconnolly commented on Bug JENKINS-31549
 
Re: sshcredentials via trilead-ssh2 Cannot Connect to Servers Requiring Strong MACs

Not an issue with ssh-credentials-api-plugin but rather an issue in ssh-slaves-plugin

Reply all
Reply to author
Forward
0 new messages