【问题标题】:Connection refused in sftp serversftp 服务器中的连接被拒绝
【发布时间】:2014-10-27 15:46:54
【问题描述】:

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

        }

        }

【问题讨论】:

  • 您是否已经在 localhost 上运行并监听了 SSH 服务器?
  • 是的,我已经在 localhost 上安装了 ssh 服务器。
  • 你试过在这个程序之外ssh localhost吗?如果连接被拒绝,则意味着它无法连接到您的 ssh 服务器。
  • SSH 服务器是否也足以支持 SSH2?
  • 我确定它默认使用 SSH2。如果连接被拒绝,则意味着它根本无法连接。你可以“telnet localhost 22”吗?

标签: java sftp jsch libssh2


【解决方案1】:

“连接被拒绝”表示在您尝试连接的 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/

【讨论】:

    猜你喜欢
    • 2013-07-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2014-08-30
    相关资源
    最近更新 更多