Java J2SSH SFTP - 主机密钥无效

时间:2013-04-11 15:51:16

标签: java j2ssh

我正在使用J2SSH 0.2.9 SFTP。连接到特定的SFTP站点时,我收到错误

主机密钥签名无效

但是,使用WinSCP或Filezilla连接到同一站点并不会给我带来任何错误。

关注的特定代码区域是

boolean result = pk.verifySignature(sig, sigdata);
    log.info("The host key signature is " +
        (result ? " valid" : "invalid"));

在TransportProtocolClient.java

密钥是SSH-DSS,如果它有所作为。

1 个答案:

答案 0 :(得分:1)

在没有环境重现的情况下在黑暗中刺伤,但我会猜测你所连接的是j2ssh.transport.publickey.dsa.SshDssPublicKey的这部分问题。

163    if (!header.equals("ssh-dss")) {
164        throw new InvalidSshKeySignatureException();
165    }

还有一些其他错误情况会导致同样的例外情况。

252    } catch (NoSuchAlgorithmException nsae) {
253         throw new InvalidSshKeySignatureException();
254    } catch (InvalidKeyException ike) {
255        throw new InvalidSshKeySignatureException();
256    } catch (IOException ioe) {
257        throw new InvalidSshKeySignatureException();
258    } catch (SignatureException se) {
259        throw new InvalidSshKeySignatureException();
260    }

我怀疑服务器是否错过了解IETF RFC 4253的第13页并发送了一些稍微不同的东西(所有大写?)来编码签名格式标识符。我检查过的具有类似功能的其他程序似乎强制将键名称强制为大写或小写,然后执行相等检查。