SFTP连接失败(密码少服务器)

时间:2017-07-24 05:06:55

标签: java ssh sftp jsch sshd

我已配置密码少SFTP服务器。 我想使用带有用户名和密码的jsch(JAVA)库连接它。 我一直在使用以下代码行: -

  

session.setConfig(" PreferredAuthentications&#34 ;,              "密码,基于主机的,公钥&#34);

JAVA中的这一行是否会覆盖SSH配置(密码少)的设置?

请注意SFTP服务器使用终端命令SFTP正常连接,无需提示密码。

2 个答案:

答案 0 :(得分:0)

没有。它不会覆盖服务器SSH配置。

这行代码只会告诉ssh客户端(即您的代码)在尝试连接SFTP服务器时要尝试哪种类型的身份验证方法。

客户端将尝试服务器也支持的第一种方法,并尝试使用此方法创建连接。

this JSch javadoc

解释了这一点

当然,您必须配置SSH服务器以允许密码验证。为此,您应该在以下位置打开ssh_config文件:

/etc/ssh/ssh_config

取消注释以下行

PasswordAuthentication yes

答案 1 :(得分:0)

使用Jsch库可以实现如下所述。

初始化Jsch并从中获取com.jcraft.jsch.Session对象,然后在此UserInfo对象中设置Session

使用超时值连接会话,然后打开通道以传输文件。

    if(null != session && !session.isConnected()){
            session.connect(10000); 
    }

   ChannelSftp sftpChannel = (ChannelSftp) 
   session.openChannel(UIConstants.SFTP);
   sftpChannel.connect();

您需要使用ChannelSftp进行文件传输。

Jsch图书馆https://epaul.github.io/jsch-documentation/simple.javadoc/com/jcraft/jsch/JSch.html

的更多细节