Как подключиться к удаленной машине SSH, используя Java с JSch, когда ключ зашифрован - PullRequest
0 голосов
/ 07 июня 2018

Ссылаясь на заданный вопрос: Вход с помощью пары ключей в экземпляр EC2 с JSch

Я пытаюсь подключиться с JCraft JSch к двум различным компьютерам EC2:

1-й EC2машина без ENCRYPTION для файла .pem, и она отлично работает!

$ cat ~/Documents/CA01.pem                                                                                       
-----BEGIN RSA PRIVATE KEY-----
…….

Однако на 2-й машине файл .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) ....

Пожалуйста, помогите.Может быть, другие полезные библиотеки?

1 Ответ

0 голосов
/ 07 июня 2018

Секретная фраза закрытого ключа не является парольным паролем.Поэтому вы не можете передать его Session.setPassword().

. Используйте перегрузку JSch.addIdentity(), которая принимает кодовую фразу:

jsch.addIdentity("/path/to/pem/OPEN_VPN.pem", getPsw());

Также обратите внимание, чтозакрытый ключ зашифрован или нет, не имеет ничего общего с сервером.А серверу пофиг.Поэтому, если вы довольны тем, что ваш закрытый ключ не зашифрован для первого сервера, нет никаких причин, по которым ваш закрытый ключ для второго сервера также должен быть зашифрован.Просто удалите шифрование.

...