问题发现

一个项目中使用了ganymed-ssh2作为连接linux机器的工具,在开发环境和大多数测试及线上环境运行良好,但某一次测试环境部署后,对应功能被访问后开始出现如下异常:

Caused by: java.io.IOException: There was a problem while talking to 127.0.0.1:22
	at ch.ethz.ssh2.Connection.connect(Connection.java:642)
	at com.ultrapower.driver.resdriver.transport.SSHProtocol.ini(SSHProtocol.java:94)
	… 2 more
Caused by: java.io.IOException: Key exchange was not finished, connection is closed.
	at ch.ethz.ssh2.transport.KexManager.getOrWaitForConnectionInfo(KexManager.java:90)
	at ch.ethz.ssh2.transport.TransportManager.getConnectionInfo(TransportManager.java:221)
	at ch.ethz.ssh2.Connection.connect(Connection.java:603)
	… 3 more
Caused by: java.io.IOException: Cannot negotiate, proposals do not match.
	at ch.ethz.ssh2.transport.KexManager.handleMessage(KexManager.java:411)
	at ch.ethz.ssh2.transport.TransportManager.receiveLoop(TransportManager.java:604)
	at ch.ethz.ssh2.transport.TransportManager$1.run(TransportManager.java:315)
	at java.lang.Thread.run(Unknown Source)

问题解决

修改/etc/ssh/sshd_config,在MACs后面添加hmac-sha1-96,或者干脆注释掉MACs

Logo

更多推荐