Ssh 使用JSch键对登录到EC2实例

Ssh 使用JSch键对登录到EC2实例,ssh,amazon-ec2,jsch,Ssh,Amazon Ec2,Jsch,我希望能够使用JSCHJavaSSH库连接到我的EC2实例。如何将AWS中的.pem密钥对与JSch一起使用?尝试连接时如何处理UnknownHostKey错误?groovy代码将使用JSch库连接到EC2实例,运行whoami和hostname命令,然后将结果打印到控制台: @Grab(group='com.jcraft',module='jsch',version='0.1.49') 导入com.jcraft.jsch* JSch JSch=新的JSch(); jsch.addIdentit

我希望能够使用JSCHJavaSSH库连接到我的EC2实例。如何将AWS中的.pem密钥对与JSch一起使用?尝试连接时如何处理UnknownHostKey错误?

groovy代码将使用JSch库连接到EC2实例,运行whoami和hostname命令,然后将结果打印到控制台:

@Grab(group='com.jcraft',module='jsch',version='0.1.49')
导入com.jcraft.jsch*
JSch JSch=新的JSch();
jsch.addIdentity(“/your-path-to-your-pem/gateway.pem”);
setConfig(“StrictHostKeyChecking”、“no”);
//在此处输入您自己的EC2实例IP
Session Session=jsch.getSession(“ec2用户”,“54.xxx.xxx.xxx”,22);
session.connect();
//跑东西
String命令=“whoami;主机名”;
Channel=session.openChannel(“exec”);
channel.setCommand(命令);
channel.setErrStream(System.err);
channel.connect();
InputStream输入=channel.getInputStream();
//开始从shell上执行的命令中读取输入
字节[]tmp=新字节[1024];
while(true){
while(input.available()>0){
inti=input.read(tmp,0,1024);
如果(i<0)断裂;
打印(新字符串(tmp,0,i));
}
if(channel.isClosed()){
println(“退出状态:+channel.getExitStatus());
打破
}
睡眠(1000);
}
通道断开();
session.disconnect();

下面是如何通过网关ssh隧道(NAT堡垒)建立相同连接的另一个示例:

1:将ec2.pem文件复制到~/.ssh/

2:然后chmod 700~/.ssh/ec2.pem

3:创建一个新文件~/.ssh/config

vi ~/.ssh/config

Host ec2server1 
HostName ec2.Server-Name.com 
User ec2-user 
IdentityFile "~/.ssh/ec2.pem"
4:现在将命令与~/.ssh/config文件第一行中给定的ssh和主机值一起使用。 像这样

ssh ec2server1

5:现在在您的代码中使用步骤4命令

类似的问题,但使用不同的库我正在尝试执行相同的操作,但是当“/your path to your pem/gateway.pem”被加密时会发生什么情况?它不起作用:(:…阅读文档()。尝试jsch.addIdentity(privateKey,“Passphrase”);