2

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

4

1 回答 1

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

于 2013-04-15T14:07:45.520 回答