【发布时间】:2014-03-01 06:44:26
【问题描述】:
我想通过 ssh 连接到代理后面的机器,然后在我的 java 程序中进行端口转发。 (为了能够 ssh 到盒子,我应该先 ssh 到代理机器)。我通常通过在我的 ~/.ssh/config 文件中包含以下条目来做到这一点:
ProxyCommand ssh proxyhost.com -t nc %h %p
IdentityFile /home/username/username_dsa_key
然后我运行以下命令进行端口转发,将 hostmachine.com:54321 映射到我的 localhost: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/ 中的示例,但不幸的是它们在这种情况下没有帮助。
谢谢!
【问题讨论】:
标签: java ssh jsch portforwarding