我想将 VNC 流量通过隧道传输到host2
,该流量只能从 访问host1
,而host1
可以公开访问。
我按照中所述设置了多跳 SSH 隧道这个问题, 使用:
ssh -L 5901:localhost:6000 host1 ssh -L 6000:localhost:5901 -N host2
这确实可以完美地完成工作。但是,我不知道如何正确关闭嵌套隧道。我试过Ctrl+c但这似乎是杀掉第一ssh
例地host1
。但是,和ssh
之间的第二条隧道保持开放,这是非常不希望的,因为任何人实际上都可以通过它转发流量。host1
host2
另外,通过-N
选项,我没有得到实际的tty
on host2
,所以我不能简单地exit
从那里开始。如果没有,,-N
我仍然没有得到 a tty
,而是收到以下错误:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.
term: Undefined variable.
我从 MacOS X 开始连接,主机 1 和主机 2 都运行 RHEL 6。
答案1
您使用 tty 的方式是正确的,该-t
选项正是为您提供的。但是,除非您实际上的目标是获得 tty 会话进行交互,否则请将此选项保留在链中的最后一个 ssh 命令中。在您的情况下,您只需要在第一次连接时使用它:
ssh -L 5901:localhost:6000 host1 -t ssh -L 6000:localhost:5901 -N host2
现在当你使用Ctrl-C,隧道将在所有主机之间建立。