2016-12-19 2 views
0

Momentan haben wir 2 Unix Server A und B. Um uns mit dem B Server zu verbinden, haben wir zuerst den Server A verbunden und dann melden wir uns bei JumpHost B mit SSH an Unix-Eingabeaufforderung.Verbindung mit SSH über einen anderen Server in Java

nun auf einem einfachen Werkzeug in Java Ich arbeite, die die Dateien vom Server B.

In dem Beispielcode zum Download habe ich über den Link unten bekam, wenn ich die Host-Details von B-Server übergeben, die Hostverbindung schlägt fehl.

Wenn ich die Host-Details eines Server übergeben ist die Verbindung erfolgreich und in der Lage, die Dateien A. in Server herunterladen

Ich brauche Hinweise, wie man auf Server A verbinden und dann Server B über Java und Download Dateien vom Server B. kann

SSH Connection Java

+0

Korrektes Englisch. – rghome

Antwort

0

Sie verwenden die overthere Bibliothek. Zunächst importieren Sie die Abhängigkeit:

<dependency> 
    <groupId>com.xebialabs.overthere</groupId> 
    <artifactId>overthere</artifactId> 
    <version>4.4.2</version> 
</dependency> 

... und dann zu Ihrem severs (A, B, etc.) anschließen:

ConnectionOptions options = new ConnectionOptions(); 
options.set(ConnectionOptions.PASSWORD, passwd); 
options.set(ConnectionOptions.CONNECTION_TIMEOUT_MILLIS, connectionTimeout); 
options.set(ConnectionOptions.USERNAME, login); 
options.set(ConnectionOptions.ADDRESS, host); 
options.set(ConnectionOptions.OPERATING_SYSTEM, OperatingSystemFamily.UNIX); 
options.set(SshConnectionBuilder.CONNECTION_TYPE, SshConnectionType.SCP); 
OverthereConnection connection = Overthere.getConnection(SshConnectionBuilder.SSH_PROTOCOL, options); 
+0

ist es nicht möglich, mehrere SSH-Verbindungen über JSch zu erreichen? –

+0

Es ist möglich. Wiederholen Sie das Snippet für jede gewünschte SSH-Verbindung. –

+0

Mehrere Jumphost-Verbindungen können über die jsch-setportforwarding-Methode erreicht werden. –

0

Was Sie suchen tatsächlich ist das, was in Overthere einem genannt wird Sprungstation.

Sie wollen wie diese verbinden: Client -> Server A -> Server B

Mit overthere Sie können Setup, dass die Verbindung wie folgt:

ConnectionOptions jumpStationOptions = new ConnectionOptions(); 
jumpStationOptions.set(ConnectionOptions.ADDRESS, "Server A"); 
jumpStationOptions.set(ConnectionOptions.USERNAME, "Username A"); 
jumpStationOptions.set(ConnectionOptions.PASSWORD, "Password A"); 
jumpStationOptions.set(ConnectionOptions.PROTOCOL, "ssh-jumpstation"); 
jumpStationOptions.set(ConnectionOptions.OPERATING_SYSTEM, OperatingSystemFamily.UNIX); 
ConnectionOptions options = new ConnectionOptions(); 
options.set(ConnectionOptions.PASSWORD, "Password B"); 
options.set(ConnectionOptions.USERNAME, "Username B"); 
options.set(ConnectionOptions.ADDRESS, "Server B"); 
options.set(ConnectionOptions.OPERATING_SYSTEM, OperatingSystemFamily.UNIX); 
options.set(SshConnectionBuilder.CONNECTION_TYPE, SshConnectionType.SCP); 
options.set(ConnectionOptions.JUMPSTATION, jumpStationOptions); 
OverthereConnection connection = Overthere.getConnection(SshConnectionBuilder.SSH_PROTOCOL, options); 

Dieses Setup konfigurieren "Server A" als Jumpstation verwendet werden, um "Server B" zu erreichen.