如何使用带密码的sshtools SftpClient?

时间:2013-08-25 16:06:11

标签: java sftp j2ssh

我试图使用j2ssh SshClient但没有成功。

我正在尝试使用私有RSA密钥+密码来打开连接。 我找到了一些我不确定的写作方法:

Properties properties = new Properties();
properties.put("Passphrase", "xyz");
properties.put("PrivateKey", "sftp_rsa");
properties.put("Username", "user");
properties.put("StrictHostKeyChecking", "no");
publicKeyAuthenticationClient.setPersistableProperties(properties);
int result = ssh.authenticate(publicKeyAuthenticationClient);

我使用setPersistableProperties方法加载包含相关数据的Properties对象。 我已将PrivateKey设置为文件名,并将Passphrase设置为相关的密码短语。

其他的是我得到提示:

The host hostname.host,1.1.1.1 is currently unknown to the system
The host key fingerprint is: 100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Always option disabled, host file is not writeable
Do you want to allow this host key? [Yes|No]

我试图使用StrictHostKeyChecking属性设置为“no”删除。 (当然没有成功)

任何想法??

谢谢!

1 个答案:

答案 0 :(得分:2)

SshClient.connect方法将HostKeyVerification对象作为第二个参数,其中一个实现是IgnoreHostKeyVerification,您可以像以下一样使用它:

SshConnectionProperties props = new SshConnectionProperties();
props .setHost(server);
props .setPort(port);
sshClient.connect(props , new IgnoreHostKeyVerification());

//this is your code
Properties properties = new Properties();
properties.put("Passphrase", "xyz");
properties.put("PrivateKey", "sftp_rsa");
properties.put("Username", "user");
properties.put("StrictHostKeyChecking", "no");
publicKeyAuthenticationClient.setPersistableProperties(properties);
int result = sshClient.authenticate(publicKeyAuthenticationClient);

我不确定这是否可以解决您的问题,但我认为可能就是这样。