Как получить доступ к серверу apache mina ssh с удаленной машины? - PullRequest
0 голосов
/ 13 октября 2018

Я создал экземпляр Amazon Linux 2, где развернул программу Java, запущенную с помощью systemd.Java-программа представляет собой приложение оболочки vertx, которое использует Apache Mina для запуска SSH-сервера через порт 2000. Подключение к SSH-серверу должно быть возможно двумя способами: с использованием открытого ключа или пароля.

ПослеКлассическая аутентификация ssh на порту 22 для доступа к моему экземпляру amazon, я могу подключиться к серверу java ssh, работающему на порту 2000, локально с парольной аутентификацией.Однако, когда я пытаюсь подключиться к SSH-серверу с моего локального компьютера, предоставив закрытый ключ Amazon, соединение застревает в строке « debug1: строка локальной версии SSH-2.0-OpenSSH_7.5 » и, наконец, отказывается послевремя ожидания 2 минуты:

ssh -i /Users/toto/.ssh/my_amazon_key.pem -p 2000 ec2-user@my-application.server.com -vvv
OpenSSH_7.5p1, LibreSSL 2.5.4
debug1: Reading configuration data /Users/toto/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 52: Applying options for *
debug2: resolving "my-application.server.com" port 2000
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to my-application.server.com [35.XXX.XX.XX] port 2000.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /Users/toto/.ssh/my_amazon_key.pem type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/toto/.ssh/my_amazon_key.pem-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.5
ssh_exchange_identification: Connection closed by remote host

В журнале приложений Java я вижу журнал того, кто пытается подключиться к серверу SSH, но не может пройти проверку подлинности через 2 минуты.

OfКонечно, я проверил в своей группе безопасности Amazon, что открыл порт 2000. В моем случае нет запрещенного IP.

Вот код Java, работающий на SSH-сервере:

ShellService service = ShellService.create(vertx,
                new ShellServiceOptions()
                        .setTelnetOptions(
                            new TelnetTermOptions().
                                setHost("localhost").
                                setPort(5000))
                        .setSSHOptions(
                            new SSHTermOptions().
                                setHost("0.0.0.0").
                                setPort(2000).
                                setKeyPairOptions(new JksOptions().
                                        setPath("ssh/keystore.jks").
                                        setPassword("wibble")).
                                setAuthOptions(new ShiroAuthOptions().
                                        setConfig(new JsonObject().put("properties_path", "classpath:ssh/auth.properties"))))
        );

Любая идея ?Конфиг Vertx / Apache Mina?Конфликт между SSHD, работающим на порте 22 и портом 2000?

1 Ответ

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

Хорошо, я наконец-то обнаружил проблему.На самом деле я должен был сделать 2 вещи:

  1. Я изменил порт с 2000 на 3000, а затем я больше не завис, по крайней мере, я смог пройти аутентификацию по паролю.Но аутентификация с открытым ключом все еще не прошла.Поэтому я предполагаю, что что-то еще уже работало на начальном порте 2000, вызывая зависание соединения.
  2. Я запускал свое java-приложение с определенным пользователем vertx, поэтому сервер Apache Mina SSH искал несуществующий файл author_keysдля пользователя vertx.Как только я создал его с открытым ключом внутри его собственного каталога .ssh в домашнем каталоге пользователя vertx с соответствующими правами доступа, я смог аутентифицироваться, предоставив соответствующий закрытый ключ.
...