2015-04-01 62 views
9

我使用的Apache 米娜SSHD API啓動在java.In SFTP客戶端本地SFTP服務器我使用Jcraft jsch API創建SFTP我client.I成功啓動服務器。問題是我想編寫一些單元測試用例來檢查客戶端是否可以將某些文件放入服務器的根目錄。目前我的SFTP服務器沒有任何根目錄。所以我想知道是否有任何方法來設置服務器的根目錄。如何設置根目錄中的Apache米娜sshd服務器在Java中

例如:C:\ sftp如何將此路徑設置爲我的服務器根目錄。因此,客戶端每次連接服務器時都可以讀取和寫入文件。謝謝。

public class SftpServerStarter { 
 
\t 
 
\t private SshServer sshd; 
 
\t private final static Logger logger = LoggerFactory.getLogger(SftpServerStarter.class); 
 
\t 
 
\t public void start(){ 
 
\t \t 
 
\t \t 
 
\t \t sshd = SshServer.setUpDefaultServer(); 
 
\t \t sshd.setPort(22); 
 
\t \t sshd.setHost("localhost"); 
 
\t \t 
 
     sshd.setPasswordAuthenticator(new MyPasswordAuthenticator()); 
 
     sshd.setPublickeyAuthenticator(new MyPublickeyAuthenticator()); 
 
     sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider()); 
 
     sshd.setSubsystemFactories(Arrays.<NamedFactory<Command>>asList(new SftpSubsystem.Factory())); 
 
     sshd.setCommandFactory(new ScpCommandFactory()); 
 
     
 
     
 

 
     try { 
 
     \t logger.info("Starting ..."); 
 
\t \t \t sshd.start(); 
 
\t \t \t logger.info("Started"); 
 
\t \t } catch (IOException e) { 
 
\t \t \t // TODO Auto-generated catch block 
 
\t \t \t e.printStackTrace(); 
 
\t \t \t logger.info("Can not Start Server"); 
 
\t \t } 
 
\t } 
 
\t 
 
}

+0

的可能重複[如何開始編程在Java SFTP服務器(http://stackoverflow.com/questions/29531342/how-to-start -sftp-server-programming-in-java) – 2015-04-09 06:34:24

+0

@DanielNewtown你好,我知道這是很久以前的事情了..可以請你在鏈接裏重新發布那篇文章嗎?當我們說話時它現在返回404。在此先感謝 – 2016-06-02 12:24:13

回答

4

在默認它從系統屬性稱爲user.dir

中序更改此根路徑,我們可以覆蓋在NativeFileSystemViewgetVirtualUserDir(),回到你的路徑。

sshd.setFileSystemFactory(new NativeFileSystemFactory() { 
     @Override 
     public FileSystemView createFileSystemView(final Session session) { 
      return new NativeFileSystemView(session.getUsername(), false) { 
       @Override 
       public String getVirtualUserDir() { 
        return "C:\\MyRoot"; 
       } 
      }; 
     }; 
    }); 
+1

它工作得很好。感謝你的朋友你節省我的時間。 – gihan 2015-04-10 06:52:17

2

您也可以按照下面的鏈接瞭解如何與不同sshd的核心版本設置根目錄中的Apache米娜sshd的SFTP服務器。

<dependency> 
     <groupId>org.apache.sshd</groupId> 
     <artifactId>sshd-core</artifactId> 
     <version>0.10.0</version> 
    </dependency> 

<dependency> 
     <groupId>org.apache.sshd</groupId> 
     <artifactId>sshd-core</artifactId> 
     <version>0.14.0</version> 
    </dependency> 

How to override getVirtualUserDir() in Apache Mina sshd-core version 0.14.0

+0

非常感謝!這是0.14.0版本的sshd-core的唯一解決方案。 – Brain 2015-09-16 06:52:06

相關問題