2010-07-21 228 views
7

是否可以通過java與服務器建立ssh連接?SSH連接Java

+2

檢查[http://stackoverflow.com/questions/3071760/ssh-connection-with-java/9019095#9019095] – World 2012-03-08 09:00:56

+0

FWIW,我在那些剛剛看了一下如下所列,並且sshtools僅在GPL許可下可用。 (jsch在BSD下可用,sshJ在Apache下可用。) – Mickalot 2013-05-20 14:46:17

回答

3

jschsshJ都是很好的客戶。我個人使用sshJ,因爲代碼被更徹底地記錄下來。

jsch已被廣泛使用,包括在eclipse和apache ant中。我也遇到過jsch和AES加密私鑰的問題,這些私鑰需要在3DES中重新加密,但這可能就是我。

+0

確定jsch庫工作正常並且很容易實現。謝謝您的回答。 – Benni 2010-07-22 20:34:53

1

爲了連接到Java服務器,你需要一個SSHD的實現(SSH客戶端是不夠的)。您可以嘗試阿帕奇SSHD,

http://mina.apache.org/sshd/

由於sshd的是已經在大多數系統上運行的,更簡單的方法是通過SSH隧道來連接到服務器。

2

是的,這是可能的。你可以試試下面的代碼:

package mypackage; 
import com.jcraft.jsch.ChannelSftp; 
import com.jcraft.jsch.JSch; 
import com.jcraft.jsch.Session; 
import java.io.*; 

public class SSHReadFile 
    { 
    public static void main(String args[]) 
    { 
    String user = "user"; 
    String password = "password"; 
    String host = "yourhostname"; 
    int port=22; 

    String remoteFile="/home/john/test.txt"; 

    try 
     { 
     JSch jsch = new JSch(); 
     Session session = jsch.getSession(user, host, port); 
      session.setPassword(password); 
      session.setConfig("StrictHostKeyChecking", "no"); 
     System.out.println("Establishing Connection..."); 
     session.connect(); 
      System.out.println("Connection established."); 
     System.out.println("Crating SFTP Channel."); 
     ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp"); 
     sftpChannel.connect(); 
     System.out.println("SFTP Channel created."); 
     } 
    catch(Exception e){System.err.print(e);} 
    } 
    } 
+0

完美。爲我工作。 – 2014-07-30 06:39:23