我正在尝试使用以下 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 控制台中,我创建了一个用户/密码,我可以使用它登录 AWS 管理控制台。但是当我在上面的 Java 代码中使用这个用户/密码时,我收到:
Error: com.jcraft.jsch.JSchException: Auth fail
Amazon EC2 的 SSH/SFTP 用户名是:
对于 Amazon Linux AMI,用户名是
ec2-user
。
对于 RHEL AMI,用户名是
ec2-user
或 root
。
对于 Ubuntu AMI,用户名是
ubuntu
或 root
。
对于 Centos AMI,用户名是
centos
。
对于 Fedora AMI,用户名是
ec2-user
。
对于 SUSE,用户名是
ec2-user
或 root
。
请参阅 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-from-windows.html
要进行身份验证,请使用您在创建实例时与该实例关联的私钥。
请参阅 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
一般来说,您应该首先设置并测试与一些独立 SFTP/SSH 客户端的连接。然后才尝试连接您的代码。
我编写了一份关于 使用 WinSCP SFTP 客户端连接到 Amazon EC2 的指南。如果您遵循它并成功与 WinSCP 连接,那么使用 JSch 代码应该很容易做同样的事情。