2014-10-27 6 views
1

Я пытаюсь использовать localhost как SFTP-сервер. Я использую Jsch-библиотеку Java для реализации SFTP с SSH2. Следующий код загружает текстовый файл в каталог на локальной машине с sftp. Но я не могу подключиться к localhost.Соединение отказалось на сервере sftp

 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

Есть ли у вас сервер SSH, который уже работает и прослушивает localhost? –

+0

Да, я установил сервер ssh на localhost. – Sam

+0

Вы пробовали использовать ssh localhost вне этой программы? Если соединение будет отклонено, это означает, что он не может подключиться к вашему серверу ssh. –

ответ

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/.