NoMachine 通过 SSH/Netcat 代理

NoMachine 通过 SSH/Netcat 代理

我正在通过 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 将默认使用原始编码,从而导致网络性能不佳。

就是这样!

相关内容