2013-05-18 9 views
8

Ich möchte die JSch Java SSH-Bibliothek verwenden, um eine Verbindung zu meiner EC2-Instanz herzustellen. Wie verwende ich mein .pem-Schlüsselpaar von AWS mit JSch? Wie gehe ich mit dem UnknownHostKey-Fehler beim Verbindungsaufbau um?Anmeldung des Schlüsselpaars an der EC2-Instanz mit JSch

+0

ähnliche Frage zu http://stackoverflow.com/q/9283556/311525 verwenden, aber mit einer anderen Bibliothek – Scott

Antwort

12

Der groovy Code wird die JSch Bibliothek verwenden, um eine EC2-Instanz zu verbinden, die whoami und Hostnamen Befehle ausführen, dann die Ergebnisse an die Konsole drucken:

@Grab(group='com.jcraft', module='jsch', version='0.1.49') 

import com.jcraft.jsch.* 

JSch jsch=new JSch(); 
jsch.addIdentity("/your path to your pem/gateway.pem"); 
jsch.setConfig("StrictHostKeyChecking", "no"); 

//enter your own EC2 instance IP here 
Session session=jsch.getSession("ec2-user", "54.xxx.xxx.xxx", 22); 
session.connect(); 

//run stuff 
String command = "whoami;hostname"; 
Channel channel = session.openChannel("exec"); 
channel.setCommand(command); 
channel.setErrStream(System.err); 
channel.connect(); 

InputStream input = channel.getInputStream(); 
//start reading the input from the executed commands on the shell 
byte[] tmp = new byte[1024]; 
while (true) { 
    while (input.available() > 0) { 
     int i = input.read(tmp, 0, 1024); 
     if (i < 0) break; 
     print(new String(tmp, 0, i)); 
    } 
    if (channel.isClosed()){ 
     println("exit-status: " + channel.getExitStatus()); 
     break; 
    } 
    sleep(1000); 
} 

channel.disconnect(); 
session.disconnect(); 

Hier ist ein weiteres Beispiel dafür, wie das gleiche zu machen Verbindung, aber über einen Gateway SSH-Tunnel (NAT Bollwerk): https://gist.github.com/scoroberts/5605655

3

1: kopieren ec2.pem Datei ~/.ssh/

2: dann chmod 700 ~/.ssh/ec2.pem

3: Erstellen Sie eine neue Datei ~/.ssh/config

vi ~/.ssh/config 

Host ec2server1 
HostName ec2.Server-Name.com 
User ec2-user 
IdentityFile "~/.ssh/ec2.pem" 

4: Jetzt den Befehl mit ssh und Host-Wert, den Sie in ~/.ssh/config-Datei der ersten Zeile angegeben verwenden. wie diese

ssh ec2server1 

5: Jetzt den Schritt 4 Befehl im Code