我正在通过 ssh 连接将 nc 隧道连接到我的目标主机 (example.com),然后连接到我的网关。以下是此连接的 .ssh/config 设置:
Host target
Hostname example.com
HostKeyAlias target
ProxyCommand ssh me@gateway /bin/nc example.com 22
这很棒,让我可以一步 ssh 到目标主机。我希望能够通过此连接隧道传输 NX 或 VNC 会话。
有谁知道这该如何做?
答案1
我认为您应该使用 SSH 已经可以执行的端口转发:
ssh -L 5900:example.com:5900 me@gateway
这会通过网关将端口 5900 从本地计算机转发到 example.com。现在只需从本地计算机“vncviewer localhost”即可。
答案2
下面展示了如何通过客户端和目标机器之间网关跳跃的 ssh 隧道创建 VNC 会话:
/etc/ssh/sshd_config(在目标机器上)必须包含以下行:
X11Forwarding yes
XAuthLocation /usr/bin/xauth
您的 xauth 路径可能不同,但默认情况下 sshd 查找错误的位置,因此应该设置此值。
.ssh/config(在客户端机器上):
Host example.com
Hostname foo.example.com
HostKeyAlias example.com
ProxyCommand ssh -t -C [email protected] /bin/nc %h 22
然后从客户端我就可以运行
我@localhost $ ssh -X -C example.com这将在我的客户端上启动 X 会话以及与 example.com 的 ssh 连接。现在,只需在远程主机上执行几个命令即可启动 VNC:
[email protected]$ vncserver :n
[email protected]$ vncviewer -encodings "copyrect tight zlib corre rre raw" :n
在上面的命令中,:n 是您要启动 vnc 的显示器编号,也是 vncviewer 应查找 vnc 会话的显示器。由于这看起来像是与 VNC 的本地连接,因此最好指定一些更好的编码,因为 vncviewer 将默认使用原始编码,从而导致网络性能不佳。
就是这样!