1

我有两台具有可信连接的服务器。我想通过没有主机密钥验证的 ssh 连接来通过 SFTP 传输文件。

我正在使用 Java 1.7 和 Redhat Linux 操作系统。

以前我使用的是 j2ssh-core0.2.9.jar,我可以在其中连接到 ssh,如下所示:

SshConnectionProperties properties = new SshConnectionProperties();
SshClient ssh = new SshClient();            
properties.setHost(host);
properties.setPort(port);               
ssh.setSocketTimeout(readTimeOut);
ssh.connect(properties,new IgnoreHostKeyVerification());    

在 j2ssh 特立独行中,

        SshConnector con = SshConnector.createInstance();
        con.getContext().setHostKeyVerification(
                new ConsoleKnownHostsKeyVerification());
        con.getContext().setPreferredPublicKey(
                Ssh2Context.PUBLIC_KEY_SSHDSS);
        SocketTransport t = new SocketTransport(hostname, port);
        t.setTcpNoDelay(true);
        SshClient ssh = con.connect(t, username);
        Ssh2Client ssh2 = (Ssh2Client) ssh;

请建议如何在 j2ssh maverick 中实现这一点。

4

1 回答 1

3

要在没有主机密钥验证的情况下进行连接,您只需从 J2SSH Maverick 片段中删除以下代码

con.getContext().setHostKeyVerification(
                new ConsoleKnownHostsKeyVerification());

但是,您正在删除对服务器进行身份验证的协议的重要部分。让您完全接受中间人攻击。

于 2015-09-11T17:58:17.123 回答