Почему Linux отказывает в разрешении на установление сеанса Java Jsch, когда файл войны развертывается на сервере TomcatLinux

Ответить Пред. темаСлед. тема
Anonymous
 Почему Linux отказывает в разрешении на установление сеанса Java Jsch, когда файл войны развертывается на сервере Tomcat

Сообщение Anonymous »

Я пытаюсь установить сеанс Jsch в контроллере Java Spring, чтобы можно было выполнить сценарий оболочки. Сеанс установлен, и команды выполняются во время локального тестирования и ручного тестирования на компьютере, но не удается подключиться к

java.net.SocketException : Разрешение запрещено, Подключиться Сообщение об ошибке в файле war, развернутом в tomcat на том же компьютере.

Следующий код выполняется, когда я запускаю его на своем компьютере, а также на компьютере развертывания, когда Я вхожу в него и запускаю класс с помощью java RunClass, но не тогда, когда классы упакованы в файл war и развернуты в tomcat. Я получаю это сообщение либо в коде session.connect(), либо в коде ChannelExec.connect().

java.net.SocketException : Разрешение отклонено, подключение не выполнено.

Почему происходит такое поведение?
Раньше, когда я использовал класс ProcessBuilder Я также смог выполнять команды на машине, но не с помощью войны, развернутой на tomcat. Мне пришлось столкнуться с Отказано в доступе, невозможно выполнить команду chmod (или команду conda).
Controller.java

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

@RequestMapping(value="/endpoint", method=RequestMethod.GET)
public Response generateOrderTrail2(@RequestParam("id) String id){

ScriptCaller scriptCaller = new ScriptCaller();
scriptCaller.setId(id);
scriptCaller.executeCommand();

if(scriptCaller.isSuccessful()){
return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body("Successful");
}
else{
return ResponseEntity.badRequest().contentType(MediaType.APPLICATION_JSON).body("Unsuccessful");
}

}
ScriptCaller.java

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

boolean isSuccessful = false;
public void executeCommand(){
String command = './dir/folder/executeFile.sh';
try{
JSch jsch = new JSch();
Session session = jsch.getSession(this.username, this.hostname, 22);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);

session.setPassword(this.password);
session.connect();
StringBuilder output = new StringBuilder("");
ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
channelExec.setInputStream((InputStream)null);
InputStreamReader stream = new InputStreamReader(channelExec.getInputStream());
channelExec.setInputStream((InputStream) null);
channelExec.setCommand(command);
channelExec.connect();
char[] buffer = new char[128];
int read;
while ((read=stream.read(buffer 0, buffer.length))>=0){
output.append(buffer, 0, read);
}
this.callerResponse = outputString.toString();
int exitCode = channelExec.getExitStatus();
channelExec.disconnect();
session.disconnect();
if(exitCode == 0){
System.out.println("Shell Script Executed Successfully");
isSuccessful = true;
}
else{
System.out.println("Shell Script Failed to Execute");
isSuccessful = false;

}
}
catch(Exception e){
e.printStackTrace();
isSuccessful = false;
}
Команда сборки Maven.

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

mvn clean deploy -Denvironment=local -Dskip.webapp=true -Dmaven.test.skip=true
Исключение

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

java.net.SocketException: Permission Denied(connect failed)
..
..
..
..
at com.jcraft.jsch.Util.createSocket(Util.java)
Tomcat версии 7.0.76.0
Я проверил, нет ли у пользователя без полномочий root прав или у файла нет разрешений на выполнение,
Файл оболочки имеет rwx для всех пользователей (разрешения 777).
Один и тот же файл исполняется одним и тем же пользователем при локальном тестировании или когда код запускается внутри одного Java файл, если я войду в систему и запущу на компьютере.
Это просто отказ в разрешениях, когда я вызываю конечную точку после развертывания файла войны на сервере Tomcat

Подробнее здесь: https://stackoverflow.com/questions/787 ... he-war-fil
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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