我有两台可信连接的服务器。我想通过没有主机密钥验证的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中实现这一目标。
答案 0 :(得分:3)
要在没有主机密钥验证的情况下进行连接,您只需要从J2SSH Maverick代码段中删除以下代码
con.getContext().setHostKeyVerification(
new ConsoleKnownHostsKeyVerification());
但是,您要删除对服务器进行身份验证的协议的重要部分。让你完全接受中间人攻击。