«Неверный закрытый ключ» при использовании JSchJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 «Неверный закрытый ключ» при использовании JSch

Сообщение Anonymous »

Я использую следующий код для работы с Git в приложении Java.
У меня есть действительный ключ (используйте его постоянно), и этот конкретный код раньше работал у меня с тем же ключом и репозиторием git, но теперь я получаю следующее исключение:


неверный закрытый ключ: [B@59c40796.


В этой строке:< /p>

Код: Выделить всё

jSch.addIdentity("/private_key.pem");
Мой полный код:

Код: Выделить всё

    String remoteURL = "ssh://git@";
TransportConfigCallback transportConfigCallback = new SshTransportConfigCallback();
File gitFolder = new File(workingDirectory);
if (gitFolder.exists()) FileUtils.delete(gitFolder, FileUtils.RECURSIVE);

Git git = Git.cloneRepository()
.setURI(remoteURL)
.setTransportConfigCallback(transportConfigCallback)
.setDirectory(new File(workingDirectory))
.call();
}

private static class SshTransportConfigCallback implements TransportConfigCallback {
private final SshSessionFactory sshSessionFactory = new JschConfigSessionFactory() {
@Override
protected void configure(OpenSshConfig.Host hc, Session session) {
session.setConfig("StrictHostKeyChecking", "no");
}

@Override
protected JSch createDefaultJSch(FS fs) throws JSchException {
JSch jSch = super.createDefaultJSch(fs);
jSch.addIdentity("/private_key.pem");

return jSch;
}
};
После поиска в Интернете я изменил createDefaultJSch на использование pemWriter:

Код: Выделить всё

@Override
protected JSch createDefaultJSch(FS fs) throws JSchException {
JSch jSch = super.createDefaultJSch(fs);
byte[] privateKeyPEM = null;

try {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");

List lines = Files.readAllLines(Paths.get(".pem"), StandardCharsets.US_ASCII);
PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(String.join("", lines)));
RSAPrivateKey privKey = (RSAPrivateKey) keyFactory.generatePrivate(privSpec);

PKCS8Generator pkcs8 = new PKCS8Generator(privKey);

StringWriter writer = new StringWriter();
PemWriter pemWriter = new PemWriter(writer);
pemWriter.writeObject(pkcs8);

privateKeyPEM = writer.toString().getBytes("US-ASCII");

} catch (Exception e) {
e.printStackTrace();
}

jSch.addIdentity("git", privateKeyPEM, null, null);

return jSch;
}
Но все равно возникает исключение "неверный закрытый ключ".

Подробнее здесь: https://stackoverflow.com/questions/531 ... using-jsch
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»