0

虽然 sshj 的 github 里有例子,但是我不明白我在做什么。我使用以下代码尝试连接到我的主机,仅此而已

 @Test
    public void sshTest() throws IOException {
        SSHClient client = new SSHClient();
        String username = "username";
        File privateKey = new File("D:\\SSH\\remote_new");
        client.addHostKeyVerifier(new PromiscuousVerifier());
        client.connect("myMostIp", 22);
        KeyProvider keys = client.loadKeys(privateKey.getPath());
        client.authPublickey(username, keys);
        client.close();
    }

运行的结果是这样的

net.schmizz.sshj.userauth.UserAuthException: Exhausted available authentication methods


Caused by: net.schmizz.sshj.userauth.UserAuthException: Problem getting public key from PKCS8KeyFile{resource=[PrivateKeyFileResource] D:\SSH\matcloud_new}

    ... 66 more
Caused by: java.io.IOException: unrecognised object: OPENSSH PRIVATE KEY
    at org.bouncycastle.openssl.PEMParser.readObject(Unknown Source)
    ... 71 more

密钥文件的格式

-----BEGIN OPENSSH PRIVATE KEY-----
XXXXXXXXX
-----END OPENSSH PRIVATE KEY-----

不知道怎么办,jsch不支持这种格式的key文件

4

1 回答 1

0

最新版本是 0.30.0,尽管正如我之前所说的 0.27.0(2 年前)或更高版本应该完全支持 OpenSSH-newfmt 文件。– 戴夫汤普森_085

使用它https://github.com/hierynomus/sshj#user-content-release-history

于 2022-01-26T02:34:17.287 回答