Keypair login to EC2 instance with JSch

◇◆丶佛笑我妖孽 提交于 2019-11-29 06:39:31

The groovy code will use the JSch library to connect to an EC2 instance, run the whoami and hostname commands, then print the results to the console:

@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();

Here's another example of how to make the same connection, but through a gateway ssh tunnel (NAT bastion): https://gist.github.com/scoroberts/5605655

Sharad Chhetri

1: copy ec2.pem file to ~/.ssh/

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

3: create a new file ~/.ssh/config

vi ~/.ssh/config

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

4: Now use the command with ssh and Host value you given in ~/.ssh/config file's first line. like this

ssh ec2server1

5: Now use the step 4 command in your code

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!