如何解决爪哇|特立独行的 SSH |未能协商传输组件 | sha1 md5 |沙2-512沙2-256
客户通过 Putty 使用 SFTP 命令发送的密钥工作正常。通过 Winscp 工作正常。
但是当我尝试使用 Java 代码时,我得到以下信息:
Caused by: com.maverick.ssh.SshException:
Failed to negotiate a transport component
[hmac-sha1,hmac-md5] [hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256]
[Unknown cause]
代码:
else if (authMethod == AUTH_KEY) {
PublicKeyAuthentication pk = new PublicKeyAuthentication();
SshPrivateKeyFile pkfile = SshPrivateKeyFileFactory.parse(new FileInputStream(pass));
com.maverick.ssh.components.SshKeyPair pair;
if (pkfile.isPassphraseProtected())
pair = pkfile.toKeyPair(keypass);
else
pair = pkfile.toKeyPair(null);
pk.setPrivateKey(pair.getPrivateKey());
pk.setPublicKey(pair.getPublicKey());
this.session.authenticate(pk);
上述通用代码适用于现有密钥,不适用于这个新服务器。没有找到代码级别的具体解决方案。
在代码或任何类型的转换中还有什么要添加的吗?
解决方法
问题是你方只提供 HMAC-MD5 和 HMAC-SHA-1 作为 MAC 算法,而服务器端只支持 HMAC-SHA-256 和 HMAC-SHA-512。服务器在这里做正确的事情,因为 MD5 和 SHA-1 被认为是不安全的,即使它们的 HMAC 版本在 SSH 中使用时不是不安全的,责任方已经放弃使用 MD5 和 SHA-1。
因为您和服务器无法就使用的算法达成一致,连接无法继续。
看起来 the latest version of the Maverick SSH client 支持 hmac-sha2-256
(HMAC-SHA-256),因此您可以尝试升级,或者您可以使用更现代的 SSH 库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。