期望 需要使用私钥通过Java代码连接AWS服务器。
我能够成功登录,直到Red Hat 8在服务器端实现。 如果我禁用 FIS(保险丝集成服务),那么它会按预期工作。
我正在使用 IntelliJ 来编写 Java 代码。
私钥格式是RSA 3,我已经使用PuTTYgen转换为RSA 2。
关键模式是
PuTTY-User-Key-File-2: ssh-rsa
Encryption:none
Comment: rsa-key-20220125
Public-Lines:12
AAAn23vnonBIhk......................
..................
....................................
Private-Lines:28
AACABdkfjal905 slknf................
....................................
Private-MAC: nbfajesrkkjnajfnga;alksdnfal;dks
Java代码是
JSch jsch = new JSch();
jsch.addIdentity(privatekey)
Session session = jsch.getSession(username, hostname, port);
session.setConfig ("StrickHostKeyChecking","no")
session.connect();
我总是遇到错误
com.jcraft.jsch.JSchException : Auth Fail
at com.jcraft.jsch.Session.connect(Session.java:519)
at com.jcraft.jsch.Session.connect(Session.java:183)
使用Linux命令从服务器端登录
systemctl status sshd.service
:
rexec line 29: Deprecated option KeyRegenerationInterval
rexec line 30: Deprecated option ServerKeyBits
rexec line 66: Deprecated option RSAAuthentication
rexec line 82: Deprecated option RhostsRSAAuthentication
reprocess config line 66 : Deprecated option RSAAuthentication
reprocess config line 82 : Deprecated option RhostsRSAAuthentication
error: Receivved disconnect from <ipaddress> port <id>:3 com.jcrat.jsch.JSchException:Auth fail [preauth]
Disconnected from authenticating user ec2-user <ipaddress> port <id> [preauth]
当我通过PuTTY 0.76成功登录后,请看到下面
tail -f messages
。
Reached Target Timers
Reached target Paths
Listening on D-Bus User Message Bus Socket
Reached target Sockets
Reached target Basic System
Reached target default
Startup finished in 324ms
Started User Manager for UID 1000
您没有向我们提供太多信息。
没有更多信息,我只能猜测您的服务器需要 rsa-sha2,而 JSch 不支持该功能。
PubkeyAcceptedAlgorithms +ssh-rsa
添加到 sshd_config
,将允许服务器重新配置为旧的不太安全的“RSA”。对我们有用的正确语法是
PubkeyAcceptedKeyTypes +ssh-rsa