使用j2ssh maverick连接到没有主机密钥验证的ssh

时间:2015-09-11 11:17:42

标签: java ssh sftp j2ssh

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

我正在使用Java 1.7和Redhat Linux OS。

以前我使用的是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 maverick中,

        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中实现这一目标。

1 个答案:

答案 0 :(得分:3)

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

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

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