Я хочу, чтобы ssh на машине, которая находится за прокси-сервером, и выполняйте перенос портов после этого в моей программе java. (Чтобы иметь возможность ssh в поле, я должен сначала перенести ssh'ed на прокси-машину). Я обычно делаю, что, имея следующие данные в моем ~/.ssh/конфигурационный файл:Как использовать jsch с ProxyCommands для portforwarding
ProxyCommand ssh proxyhost.com -t nc %h %p
IdentityFile /home/username/username_dsa_key
А потом запустить следующее делать проброс на карту hostmachine.com:54321 моего локальный хост: 12345:
ssh -A -L12345:localhost:54321 hostmachine.com
Теперь я хочу сделать это с библиотекой JSch, но я не могу понять, как подключить ко второму хосту после открытия канала на сессии:
String proxyHost = "proxyhost.com";
String host = "hostmachine.com";
int lport = 12345;
String rhost = "localhost";
int rport = 54321;
JSch jsch=new JSch();
jsch.setKnownHosts("/home/{user}/.ssh/known_hosts");
jsch.addIdentity("/home/{user}/.ssh/{user}_dsa_key",passphrase);
Session session1 = jsch.getSession(user,proxyHost,22);
session1.connect(3000);
System.out.println(session1.isConnected());
Channel channel = session1.openChannel("shell");
////// Now what? :)
channel.disconnect();
session1.disconnect();
Любая идея?
p.s: Я читал образцы в www.jcraft.com/jsch/examples/, но в этом случае они не помогли.
Спасибо!
Спасибо! Я думаю, что это в конечном итоге сработает, но я закончил просто выполнение команды ssh оболочки из java. К сожалению, jsch был слишком сложным для этого случая, и я не мог найти хороший пример, который не требует полного прохождения dsa_key и не запрашивать парольную фразу. – N3da