从哪里获得 JSch 连接到 AWS EC2 的 username/password?

Where to get username/password for JSch connecting to AWS EC2?

我正在尝试使用以下 Java 代码连接到 EC2 实例:

Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
Session session = jSch.getSession(username, EC2-IP, 22);
session.setPassword(password);
session.setConfig(config);
session.connect();

在 EC2 IAM web 控制台中,我创建了一个 user/password,我可以使用它登录 AWS 管理控制台。但是当我在上面的 Java 代码中使用这个 user/password 时,我收到:

Error: com.jcraft.jsch.JSchException: Auth fail

SSH/SFTP Amazon EC2 的用户名是:

  • 对于 Amazon Linux AMI,用户名是 ec2-user

  • 对于 RHEL AMI,用户名是 ec2-userroot

  • 对于 Ubuntu AMI,用户名是 ubunturoot

  • 对于 Centos AMI,用户名是 centos

  • 对于 Fedora AMI,用户名是 ec2-user

  • 对于SUSE,用户名是ec2-userroot

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html


要进行身份验证,请使用您在创建实例时与实例关联的私钥。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html


一般来说,您应该首先设置和测试与一些独立 SFTP/SSH 客户端的连接。然后才尝试连接您的代码。

我已经为 connecting to Amazon EC2 with WinSCP SFTP client 编写了指南。如果您遵循它并与 WinSCP 成功连接,那么使用 JSch 代码应该很容易做到这一点。