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

标签 java ssh openssh sshd apache-mina

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

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

问题是 getServerKey() 的结果为 null...

如何使用 Apache SSHD 客户端获取 SSH 服务器的公钥。

最佳答案

connect() 和随后的 key 交换都是异步操作,因此需要等待几次。例如。 :

        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();

关于java - Apache SSHD 客户端获取服务器公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50591430/

相关文章:

java - VM初始化时出错java/lang/NoClassDefFoundError : java/lang/ref/FinalReference

java - 当 Android 中其中一个日期为字符串格式时,如何比较日期?

java - 从 Windows 通过 ssh 连接 Linux

ssh - Rsync 相当于 scp -3

git - Composer 使用 https 而不是 ssh(对于 GitLab)

java - 嵌套的ArrayList初始化有问题吗?

hadoop - Cygwin SSHD 服务在 Windows 中启动和停止

git - Github 是如何处理这么多公钥的

docker - 使用 docker 容器作为网络内的 SSH 隧道

java - 如何抑制警告 "Synchronization on a non-final field"