在中间机器上使用 X

在中间机器上使用 X

编辑:我没有sshd_config在工作机器上正确设置我的文件。尽管我取消了该行的注释X11Forwarding no,但我没有意识到它说的是“不”而不是“是”。由于默认值是“否”,我只是假设,没有太多注意,这将是X11Forwarding yes在我取消注释之后。

我有一台公共机器,中间。我有另一台机器在工作:WORK,我希望能够从我的家用计算机:HOME 访问它。

HOME 可以访问 MIDDLE,WORK 可以访问 MIDDLE,但 MIDDLE 不能直接访问任何一台机器,并且 HOME 和 WORK 不能直接互相访问。

我有一个在启用了 X11Forwarding 的 WORK 上运行的 SSH 服务器。如果我设置从工作到中间的反向隧道,然后从家庭做ssh -X MIDDLE,然后ssh -X -p <someport> localhost,我得到X11 forwarding request failed on channel 0

我用来设置隧道的命令:

# On machine WORK:
user2@WORK:   $ ssh -R 33333:localhost:22 user1@MIDDLE

# On machine HOME:
user@HOME:    $ ssh -Y user1@MIDDLE
# And then on machine MIDDLE:
 user1@MIDDLE: $ ssh -Y user2@localhost -p 33333

笔记:user1 != user2

有什么方法可以实现我想要的吗?

答案1

您可以尝试使用“新”(实际上不那么新)cmdline 标志-Y。这是一种更好的替代-X。从手册:

     -Y      Enables trusted X11 forwarding.
             Trusted X11 forwardings are not subjected 
              to the X11 SECURITY extension controls.

现在这并没有透露太多(至少对于链接而言)。但快速测试表明它有效:

   $ ssh -Y localhost   # first connection
   $ ssh -Y localhost   # second connection on top of first connection
   $ xclock

(我还在真实网络中进行了测试,其中中间机器绝对是没有任何X11的服务器,所以它确实可以工作)

答案2

清楚的

ssh -Y user1@MIDDLE -p 33333

在 HOME 上应该可以解决问题。不需要ssh -Y user2@localhost -p 33333在中间。

相关内容