提到所问的问题:Keypair login to EC2 instance with JSch
我正在尝试将JCraft JSch连接到两台不同的EC2机器:
第一台EC2机器,没有加密的.pem文件,它的工作完美!
$ cat ~/Documents/CA01.pem
-----BEGIN RSA PRIVATE KEY-----
…….然而,在第二台机器上,.pem是加密的,我有一个密码:
$ cat ~/Documents/OPEN_VPN.pem
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info:……........所以代码看起来是:
JSch jsch = new JSch();
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("PreferredAuthentications", "publickey,keyboard-interactive,password");
jsch.addIdentity("/path/to/pem/OPEN_VPN.pem");
session = jsch.getSession("root", getHost(), 22)
session.setConfig(config);
session.setPassword(getPsw());
session.connect(); // here I got Exception....
Channel channel = session.openChannel("sftp");
channel.connect();我得到了:
Exception in thread "main" com.jcraft.jsch.JSchException: USERAUTH fail
at com.jcraft.jsch.UserAuthPublicKey.start(UserAuthPublicKey.java:119)
at com.jcraft.jsch.Session.connect(Session.java:470) ....请任何帮助。也许还有其他有用的图书馆?
发布于 2018-06-07 13:10:26
私钥密码不是会话密码。所以你不能把它传递给Session.setPassword()。
使用需要密码的过载JSch.addIdentity():
jsch.addIdentity("/path/to/pem/OPEN_VPN.pem", getPsw());还请注意,私钥是否加密,与服务器无关。服务器不关心。因此,如果您对第一个服务器的私钥未加密感到满意,那么也没有理由对第二个服务器的私钥进行加密。只需删除加密。
https://stackoverflow.com/questions/50741019
复制相似问题