2014-10-27 194 views
1

我想使用本地主機作爲SFTP服務器。我使用Java的Jsch庫來實現SSH2的SFTP。以下代碼使用sftp將文本文件上載到本地計算機上的目錄。 但我無法連接到本地主機。在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服務器在本地主機上運行和監聽嗎? – 2014-10-27 15:58:49

+0

是的我已經在本地主機上安裝了ssh服務器。 – Sam 2014-10-27 16:00:03

+0

你有沒有試過在這個程序之外的ssh localhost?如果連接被拒絕,那就意味着它不能連接到你的ssh服務器。 – 2014-10-27 16:00:48

回答

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/