编辑:我没有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
在中间。