Apache Mina SSHD setKeyPairProvider сохранить сгенерированные ключи (Android) - PullRequest
0 голосов
/ 25 сентября 2018

В документации Apache Mina SSHD Github https://github.com/apache/mina-sshd#configuring-the-server-instance мы видим раздел "KeyPairProvider" .

В этом разделе мы видим

Обычно рекомендуется сохранять сгенерированные ключи, чтобы при перезапуске сервера SSHD те же ключи использовались для аутентификации сервера и во избежание предупреждения, которое могут получить клиенты при изменении ключей хоста.

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

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.

И мне нужно идти в /.ssh/known_hosts и delete для IP-адреса генерируется ключом "sha-rsa".

Я пробовал несколько способов

1.) Путь

if(SecurityUtils.isBouncyCastleRegistered()){
   PEMGeneratorHostKeyProvider hostKeyProvider = new PEMGeneratorHostKeyProvider(new File("myapp.pem").getAbsolutePath());
   hostKeyProvider.setAlgorithm("RSA");
   sshd.setKeyPairProvider(hostKeyProvider);
}else{
   SimpleGeneratorHostKeyProvider hostKeyProvider = new SimpleGeneratorHostKeyProvider(new File("myapp.ser").getAbsolutePath());
   hostKeyProvider.setAlgorithm("RSA");
   sshd.setKeyPairProvider(hostKeyProvider);
}

2.) Путь

Сначала сгенерируйте файл "keystore".

keytool -genkey -keystore "app.keystore" -keyalg RSA

sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider("app.keystore", "RSA"));

3.) Путь

sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider("hostkey.ser"));

4.) Путь

Сначала сгенерируйте файл "PEM".

openssl req -x509 -nodes -days 365000 -newkeyrsa: 1024 -keyout app.crt -out app.crt

openssl pkcs12 -export -in app.crt -out app.p12

openssl pkcs12 -in app.p12 -out app.pem

PEMGeneratorHostKeyProvider hostKeyProvider = new PEMGeneratorHostKeyProvider(new File("app.pem").getAbsolutePath());
hostKeyProvider.setAlgorithm("RSA");

или

PEMGeneratorHostKeyProvider hostKeyProvider = new PEMGeneratorHostKeyProvider("app.pem");
hostKeyProvider.setAlgorithm("RSA");

и положить

sshd.setKeyPairProvider(hostKeyProvider);

1 Ответ

0 голосов
/ 02 октября 2018

Вот как я это сделал:

import org.apache.sshd.common.util.security.bouncycastle.BouncyCastleGeneratorHostKeyProvider

...

server.setKeyPairProvider(new BouncyCastleGeneratorHostKeyProvider(Paths.get("ssh.pem")))

Понятия не имею, как я сгенерировал файл pem ..

...