我已配置密码少SFTP服务器。 我想使用带有用户名和密码的jsch(JAVA)库连接它。 我一直在使用以下代码行: -
session.setConfig(" PreferredAuthentications&#34 ;, "密码,基于主机的,公钥&#34);
JAVA中的这一行是否会覆盖SSH配置(密码少)的设置?
请注意SFTP服务器使用终端命令SFTP正常连接,无需提示密码。
答案 0 :(得分:0)
没有。它不会覆盖服务器SSH配置。
这行代码只会告诉ssh客户端(即您的代码)在尝试连接SFTP服务器时要尝试哪种类型的身份验证方法。
客户端将尝试服务器也支持的第一种方法,并尝试使用此方法创建连接。
解释了这一点当然,您必须配置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
的更多细节