通过非 X 服务器建立 SSH X 隧道

通过非 X 服务器建立 SSH X 隧道

标准“多跳隧道”问题的奇怪变化。

我目前正在远程工作,但有几个“传入”自动反向 shell 连接到专用服务器。此专用服务器才不是有 X,但是几个‘传入’ shell 服务器也有。

基本上,拿三台机器,笔记本电脑、服务器、客户端。笔记本电脑和客户端有 X,服务器没有。这三台机器都可以无密码登录(笔记本电脑 > 服务器,服务器 > 客户端),并且可以无密码建立 shell。

我尝试过ssh -X user@server "ssh -X user@client gui-application",毫不奇怪,我收到了“无法打开显示”的消息。

有谁知道这种隧道施工的妙招吗?

答案1

您的命令对我来说确实有效,所以我认为您不需要做任何不同的事情。但是,我发现如果我-t在第一个 ssh 上使用一个选项,它会更加快速地工作:

ssh -tX user@server "ssh -X user@client gui-application"

在我的情况下,这似乎与ssh-agent要求输入密码有关,因为我的 ssh 密钥受密码保护。但是,也许这对你的情况也有帮助。

我还尝试-A在两个 ssh 命令上添加(代理转发),这也有效,尽管延迟了几秒钟(不知道为什么)。它出现了一个 GUI 密码对话框,用于输入从“服务器”跳转到“客户端”的密钥。

请记住,带有命令的 ssh 不会.profile在远程计算机上使用,因此如果您依赖那里的设置,那么它将不起作用,尽管您可能可以使用以下命令明确运行它:

ssh -tX user@server ". .profile; ssh -X user@client gui-application"

答案2

听起来你的跳转服务器不允许 X 在跳转服务器的 /etc/ssh/sshd_config 中设置“X11Forwarding yes”(更改设置后,也不要忘记重新启动 sshd)。

答案3

尝试直接突破第一跳:

ssh -N -L 9999:client:22 user@server
ssh -p 9999 -X user@localhost gui-application

第一个命令将本地端口 9999 转发到客户端的 SSH 端口。保持此命令运行 - 登录后它不会产生输出。第二个命令将 SSH 到您的本地端口 9999(实际上是“客户端”SSH 端口),并启动 GUI。

尝试一下。

相关内容