[英]Connecting to and AWS EC2 instance using SSHJ
我對此有很多問題。
我有以下代碼
try {
final SSHClient ssh = new SSHClient();
PKCS8KeyFile keyFile = new PKCS8KeyFile();
keyFile.init(new File(Thread.currentThread().getContextClassLoader().getResource("development.pem").toURI()));
ssh.loadKnownHosts();
ssh.addHostKeyVerifier("ec2-XX-XX-XX-XX.compute-1.amazonaws.com", 22, "ff:59:aa:24:42:b1:a0:9f:c9:4c:73:34:fb:95:53:c2:b8:37:a8:f8");
// ssh.addHostKeyVerifier("ec2-XX-XX-XX-XX.compute-1.amazonaws.com", 22, "90:1e:4d:09:42:c4:16:8a:4c:dc:ae:c2:60:14:f9:ea");
ssh.connect("ec2-XX-XX-XX-XX.compute-1.amazonaws.com");
ssh.auth("ec2-user", new AuthPublickey(keyFile));
Session session = ssh.startSession();
Command sudo = session.exec("sudo su -");
System.out.println("sudo=" +sudo.getOutputAsString());
Command whoami = session.exec("whoami");
System.out.println("whoami=" + whoami.getOutputAsString());
} catch (Exception e) {
e.printStackTrace();
}
第一個addHostKeyVerifier使用AWS控制台上的指紋,注釋掉的是它一直告訴我它失敗的指紋。 我要從哪里獲得正確的密鑰。
如果我使用第二個密鑰,它將通過驗證,然后失敗。
我正在使用SSHJ版本0.8.1
這對我有用。
對於您的PEM文件,您需要使用OpenSSHKeyFile
密鑰提供程序。
SSHClient ssh = new SSHClient();
OpenSSHKeyFile keyFile = new OpenSSHKeyFile();
File file = new File("c:\\full\\path\\to\\keyfile.pem");
keyFile.init(file);
就我個人而言,我只是壓制了主機密鑰驗證以始終返回true
。 但我確信您的方式會更安全(如果可行)。
ssh.loadKnownHosts();
ssh.addHostKeyVerifier((a, b, c) -> true);
AWS的用戶名取決於您的圖像。 通常,它是“根”。 就我而言,它是“ ubuntu”。
ssh.connect("ec2-54-165-233-48.compute-1.amazonaws.com");
ssh.auth("ubuntu", new AuthPublickey(keyFile));
Session session = ssh.startSession();
(注意:雖然我使用的是0.26.0版。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.