2010-07-21 11 views
7

Czy jest możliwe utworzenie połączenia ssh z serwerem za pomocą java?Połączenie SSH Java

+2

Sprawdź [http://stackoverflow.com/questions/3071760/ssh-connection-with-java/9019095#9019095] – World

+0

FWIW, wziąłem szybki rzut oka na te wymienione poniżej, a sshtools jest dostępny tylko na licencji GPL. (jsch jest dostępny pod BSD, a sshJ jest dostępny pod Apache.) – Mickalot

Odpowiedz

3

jsch i sshJ są dobrymi klientami. Osobiście użyłbym sshJ, ponieważ kod jest udokumentowany znacznie dokładniej.

jsch ma szerokie zastosowanie, w tym w zaćmieniu i mrówko apache. Miałem też problemy z zaszyfrowanymi kluczami prywatnymi jsch i AES, które wymagały ponownego szyfrowania w 3DES, ale to mógłbym być ja.

+0

ok biblioteka jscha działała dobrze i była bardzo łatwa do wdrożenia. Dziękuję za Twoją odpowiedź. – Benni

1

Aby nawiązać połączenie z serwerami Java, potrzebna jest implementacja SSHD (klient ssh to za mało). Można spróbować Apache sshd,

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

Ponieważ sshd już działa na większości systemów, łatwiej alternatywą jest połączyć się z serwerem przez tunel SSH.

2

Tak, jest to możliwe. Można spróbować następujący kod:

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

perfect. pracował dla mnie. –

Powiązane problemy