Я пытаюсь использовать этот код для запуска команды 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. Мне нужно добавить его где-нибудь в моем коде, чтобы сделать соединение успешным?
Похоже, вы подключаетесь к открытому ключу, а не к паролю.
Для этого я думаю, вам нужно настроить SSHExec, чтобы узнать, где находится ваш файл ключей.
Я не парень из java, но я думаю, вам нужно что-то вроде этого:
SSHExec.setOption("keyfile", "/home/user/.ssh/id_dsa.pub");
Ваш ключевой файл будет другим.