【问题标题】:Java J2SSH SFTP - Host key is invalidJava J2SSH SFTP - 主机密钥无效
【发布时间】:2013-04-11 15:51:15
【问题描述】:

我正在使用 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,如果它有所作为的话。

【问题讨论】:

  • 您连接的网站是否知名?你能说出它的名字吗?
  • 不抱歉,它是一个金融网站,通过 IP 地址连接。

标签: java j2ssh


【解决方案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 页,并发送了一些稍微不同的东西(全部大写?),因为它对签名格式标识符的编码。我检查过的其他具有类似功能的程序似乎会强制键名大写或小写,然后执行相等检查。

【讨论】:

    猜你喜欢
    • 2020-01-11
    • 2012-05-06
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2021-04-24
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多