Apache SSHD客户端获取服务器公钥。

5

我尝试获取服务器的公钥。这是我尝试过的方法:

val serverKey = sshClient.connect("dyn mem", "localhost", "2222")
  .verify()
  .getSession()
  .getKex()
  .getServerKey()

问题是获取 getServerKey() 的结果为 null...
如何使用 Apache SSHD 客户端获取 SSH 服务器的公钥。

现有答案的反馈如何?有效吗?无效吗? - Tarun Lalwani
@TarunLalwani 我非常忙,有时间再测试它。 - Jan Wytze
1个回答

2

connect()和随后的密钥交换都是异步操作,因此需要等待一段时间。例如:

        ConnectFuture connectFuture = client.connect(username, host, 22);
        connectFuture.await(5000);

        ClientSession session = connectFuture.getSession();
        session.waitFor(Arrays.asList(ClientSessionEvent.WAIT_AUTH), 5000);

        session.getKex().getServerKey();

它没有解决问题,但我确定它与此有关。当我调试并在连接后设置断点时,它可以工作。 - Jan Wytze
看起来会话连接后的密钥交换也是异步的,因此还需要等待一段时间。这也已经在答案中了。 - df778899

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接