Многоуровневый SSH-вход в Java - PullRequest
1 голос
/ 12 ноября 2010

В настоящее время я использую JSch в качестве библиотеки для подключения к моему удаленному серверу. В одном из сценариев я должен иметь возможность войти на сервер2 через сервер1. То есть я должен сначала войти на сервер server1, затем через ssh на другой сервер (server2) и выполнить свою команду. Более того, иногда я могу подключиться к серверу 3 с сервера 2.

Итак, в основном я ищу способ иметь многоуровневое ssh-соединение, которое я не знаю, как обрабатывать в Java, поскольку я не могу выполнить более одной команды в каждом канале Exec сеанса. *

Любое понимание будет оценено.

Спасибо, Реза

1 Ответ

2 голосов
/ 12 ноября 2010

Таким образом, вы уже можете без проблем использовать SSH для server1, и вы знакомы с отправкой команды для запуска на этом сервере.

Это всего лишь вопрос рекурсии по уровням сервера, как русскийкуклы.Предположим, что команда, которую вы хотите запустить на server2, равна ls (хотя действительная команда не влияет на этот пример).Затем, если вы уже вошли на сервер1, вы бы запустили эту команду как

$ ssh server2 ls

верно?

И тут у нас есть обе части решения, потому что вы уже знаете, каквыполнить команду при входе на хост.SSH на сервер 1 и запустите эту команду, и ваш многоуровневый логин работает.

Чтобы расширить его до трех (или более) хостов, идея та же.Если вы уже вошли на сервер2 и хотели выполнить команду, вы бы запустили

$ ssh server3 ls

Так что, если вы находитесь на сервере 1, вы бы запустили

$ ssh server2 ssh server3 ls

отсюдаВаша общая команда -

$ ssh server1 ssh server2 ssh server3 ls

, и на данный момент я думаю, что ясно, как это можно распространить на произвольные уровни ...: -)

...