连接在sftp服务器中被拒绝

时间:2014-10-27 15:46:55

标签: java sftp jsch libssh2

我正在尝试使用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();
        }

        }

        }

1 个答案:

答案 0 :(得分:0)

"拒绝连接"表示没有进程正在侦听您尝试连接的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/上询问。