我正在尝试使用JSCH库版本0.1.49连接到SFTP远程服务器。每次运行程序时,都会收到以下错误:
Initializing...
Connection to SFTP server is successfully
com.jcraft.jsch.JSchException: Unable to connect to SFTP server.com.jcraft.jsch.JSchException: failed to send channel request
at shell.MainClass.JschConnect(MainClass.java:95)
at shell.MainClass.main(MainClass.java:30)
第30行是:sftpChannel.connect()
来自以下代码:
System.out.println("Initializing...");
JSch jsch = new JSch();
Session session = null;
try {
session = jsch.getSession(ProjectConstants.rmUsername,ProjectConstants.rmHost, 22);
session.setPassword(ProjectConstants.rmPassword);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
if (session.isConnected() == true) {
System.out.println("Connection to SFTP server is successfully");
}
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
try {
sftpChannel.connect();
} catch (Exception e) {
throw new JSchException("Unable to connect to SFTP server. "
+ e.toString());
}
我正在使用的凭据是正确的(它使用相同的数据通过FileZilla连接),并且我还禁用了该服务器的代理(无论是使用或不使用代理,我都会得到相同的错误)
如果有人可以帮助我,我会非常感激,因为我现在被这个错误困住了一个星期......
谢谢。
答案 0 :(得分:6)
检查SFTP服务器是否已启动并正在运行。
我遇到了同样的问题 - 我无法打开SFTP频道到我的服务器,但我可以连接WinSCP。我花了一些时间注意到WinSCP会回落到SCP,因此让我很困惑。启动服务器解决了这个问题。
答案 1 :(得分:2)
检查/ etc / ssh / sshd_config中的Subsystem sftp /usr/lib/openssh/sftp-server
答案 2 :(得分:1)
在/etc/ssh/sshd_config
我改变了:
Subsystem sftp /usr/lib/openssh/sftp-server
到:
Subsystem sftp internal-sftp
有帮助。