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
8
A
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
ähnliche Frage zu http://stackoverflow.com/q/9283556/311525 verwenden, aber mit einer anderen Bibliothek – Scott