Запускать команды Unix из Java - ошибка аутентификации

1

Я пытаюсь использовать этот код для запуска команды unix из java:

        // Initialize a ConnBean object, parameter list is ip, username, password
        ConnBean cb = new ConnBean("servername", "username","");

        // Put the ConnBean instance as parameter for SSHExec static method getInstance(ConnBean) to retrieve a singleton SSHExec instance
        SSHExec ssh = SSHExec.getInstance(cb);

        // Connect to server
        Boolean isConnected = ssh.connect();

            String[] commands = new String[]{"sudo echo 'Hello command!.' > ChenTest.txt"};
            CustomTask sampleTask = new ExecCommand(commands);

            try {
                Result result = ssh.exec(sampleTask);
            } catch (TaskExecFailException e) {
                System.out.println(e);
            }
            catch (Exception e) {
                System.out.println(e);
            }

Когда я отлаживаю свое приложение, я получаю "Auth fail".

Я знаю, что мой сервер и имя пользователя верны, но не уверены, почему я не могу подключиться. У меня есть ключ на этом сервере unix. Мне нужно добавить его где-нибудь в моем коде, чтобы сделать соединение успешным?

  • 0
    Я не вижу номер порта в коде. К какому порту вы подключаетесь?
  • 0
    SSH 22 порта, так что я не думаю, что это необходимо, чтобы доказать это.
Показать ещё 6 комментариев
Теги:
ssh

1 ответ

0

Похоже, вы подключаетесь к открытому ключу, а не к паролю.

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

Я не парень из java, но я думаю, вам нужно что-то вроде этого:

SSHExec.setOption("keyfile", "/home/user/.ssh/id_dsa.pub");

Ваш ключевой файл будет другим.

  • 0
    Это может быть хорошей идеей, но есть список IOptionName. <SomeConstOption>, и он не содержит путь к файлу ключа. Это очень странно, что нет никаких документов для такой вещи, которую я должен сказать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню