我正在尝试使用localhost作为SFTP服务器。我正在使用Java的Jsch库在SSH2中实现SFTP。下面的代码使用sftp将一个文本文件上传到本地计算机上的一个目录。但是我无法连接到localhost。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
public class Server{
public Server() {
}
public static void main(String[] args) {
String SFTPHOST = "localhost";
int SFTPPORT = 22;
String SFTPUSER = "root";
String SFTPPASS ="";
String SFTPWORKINGDIR = "D:\\Upload";
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
try{
JSch jsch = new JSch();
session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp)channel;
channelSftp.cd(SFTPWORKINGDIR);
File f = new File("trial.txt");
channelSftp.put(new FileInputStream(f), f.getName());
}catch(Exception ex){
ex.printStackTrace();
}
}
}发布于 2014-10-28 21:18:33
“连接被拒绝”意味着在您尝试连接的IP地址和端口上没有侦听连接的进程。在这种情况下,最有可能的解释是您的SSH服务器进程没有运行,或者它可能被配置为侦听端口22以外的其他端口。
看起来这是一个Windows系统?如果是这样的话,您可以检查任务管理器,看看是否有sshd程序的副本在运行。要查看端口22上是否有侦听,请打开命令行窗口并运行netstat -an。然后查找如下所示的行:
TCP 0.0.0.0:22 0.0.0.0:0 LISTENING
^^-- Listening on port 22如果sshd没有运行,则需要启动它。如果它正在运行,但是端口22上没有侦听任何东西,那么您应该检查sshd的配置文件。
如果你需要更多启动sshd的帮助,你应该在https://superuser.com/上询问。
https://stackoverflow.com/questions/26591403
复制相似问题