【问题标题】:Java SSHJ - Add to known_hosts file in verifierJava SSHJ - 在验证程序中添加到 known_hosts 文件
【发布时间】:2017-01-18 19:01:16
【问题描述】:

我正在使用 SSHJ 执行远程命令,当主机在 SSH known_hosts 文件中时,我可以成功执行该命令。但是,如果主机不在此文件中,那么我希望用户可以选择添加它。

我相信这样做的方法是创建一个自定义HostKeyVerifier(模板如下所示)。但是,我正在努力将PublicKey 转换为AAAAB3Nz...cTqGvaDhgtAhw== 格式,以使我能够将主机附加到known_hosts 文件中。谁能指出我正确的方向?

public class CustomVerifier implements HostKeyVerifier {

    public boolean verify(String hostname, int port, PublicKey key) {

        System.out.println(key);    
        System.out.println(KeyType.fromKey(key));
        System.out.println(key.getAlgorithm());
        System.out.println(key.getEncoded());
        System.out.println(key.getFormat());

        return true;
    }

}

【问题讨论】:

    标签: java ssh sshj


    【解决方案1】:

    使用以下代码从known_hosts 读取密钥(参见:OpenSSHKnownHosts.java 第 213 行):

    key = new Buffer.PlainBuffer(Base64.decode(sKey)).readPublicKey();
    

    这意味着如果你有钥匙,你需要做相反的事情:

    keyString = Base64.encodeBytes(new Buffer.PlainBuffer().putPublicKey(key).getCompactData());
    

    或者更好的是,您可以扩展 OpenSSHKnownHosts 类并覆盖 hostKeyUnverifiableAction,类似于 ConsoleKnownHostsVerifier 的做法。

    【讨论】:

      猜你喜欢
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 2019-01-30
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多