AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 427890
Accepted
Time4Tea
Time4Tea
Asked: 2018-03-04 06:29:29 +0800 CST2018-03-04 06:29:29 +0800 CST 2018-03-04 06:29:29 +0800 CST

为什么我需要 XDMCP 通过 SSH 启动远程 X 会话?

  • 772

我正在尝试设置远程桌面连接,以通过 wifi 从我的笔记本电脑(均运行 Trisquel)访问我的台式电脑。我已经尝试过 VNC,但速度非常慢,所以我正在寻找其他选择。我最理想的做法是通过 SSH 启动一个远程 X 会话,该会话将使用 X 转发在我的笔记本电脑(即 tty8)上的一个单独的 tty 上运行。看起来它应该是可能的,但我试图弄清楚它是如何工作的。

通过 SSH 隧道的 X 转发似乎适用于单个 X 应用程序,使用ssh -X. 我还可以使用以下命令(安装了 xinit)在 tty8 上启动一个新的本地 X 会话:

startx lxsession -- :1 tty8

所以,把两个和两个放在一起,我应该能够通过 SSH 连接启动远程会话,方法是在使用 SSH 登录到远程机器后键入以下命令,对吧?:

startx gnome-session -- :1 tty8

但不,它不起作用!我收到以下错误:

X: user not authorized to run the X server, aborting.

根据我的阅读,我似乎需要使用 XDMCP 和/或 X 嵌套来完成此操作。

所以,我的问题是:为什么有必要使用这些额外的包来做到这一点?我认为 X 应该具有网络透明性,在这种情况下,它为什么会知道/关心我尝试使用的 tty 是在本地机器上还是在远程机器上?XDMCP/X 嵌套给图片带来了什么,X 默认不包括?

我只是想弄清楚这一点并更好地理解它。

x11 xforwarding
  • 2 2 个回答
  • 5672 Views

2 个回答

  • Voted
  1. Best Answer
    telcoM
    2018-03-04T07:29:01+08:002018-03-04T07:29:01+08:00
    startx gnome-session -- :1 tty8
    

    如果您在ssh -X会话上运行此命令,您将不会gnome-session为自己实现远程。相反,您实际上是在尝试tty8在远程主机的虚拟控制台上远程启动 GNOME 会话,无论谁碰巧坐在那台计算机上。

    相反,您需要先设置 SSH 密钥,以便您可以在您自己的帐户上在远程主机上运行命令,而无需提示输入密码或 SSH 密钥密码短语。然后你会在你的本地系统上运行这样的东西:

    startx ssh -X <remote host> gnome-session -- :1 tty8
    

    您可能需要添加&到末尾以使命令在后台运行。

    基本上,你会想要:

    1) tty8 上的 X 服务器,作为其会话进程运行...

    2) ... 到远程主机的 X-forwarding SSH 连接,其中...

    3) ...gnome-session启动并将其显示通过 SSH 连接传回本地 tty8 上的“空”X 服务器。

    请注意,如果 GNOME 使用 GPU 的高级 3d 加速功能来渲染其桌面,那么在本地运行时它将使用直接渲染(= GNOME 窗口管理器和 X 服务器之间的直接内存访问)。像这样运行远程会话时,无法直接渲染(因为 GPU 与窗口管理器进程不在同一台计算机上!),这可能会减慢速度。在这种情况下,您可能必须选择更简单的窗口管理器。

    XDMCP 是一种用于控制X11 终端的协议:精简的计算机设备,其唯一工作是充当其他计算机的 X11 显示器+鼠标+键盘。XDMCP 协议是在 SSH 之前开发的,完全不安全。它不适用于您的情况,除非您专门将显示管理器(gdm、kdm或xdm任何其他*dm)配置为支持 XDMCP,因为 XDMCP 在现代系统上默认禁用,因为它不安全。如果你这样做了,那么你可以startx让你的本地 X 服务器假装它是一个 X11 终端,并让它与远程主机建立直接的、未加密的、非 SSH 转发的连接。(拒绝吧”。)

    另一方面,X 嵌套将允许您在 :0.0(或tty7)上的常规本地 X11 会话中拥有一个大窗口,然后该窗口将包含远程桌面会话。

    • 4
  2. ivanivan
    2018-03-04T07:27:23+08:002018-03-04T07:27:23+08:00

    我为此使用 Xnest https://www.x.org/archive/X11R7.5/doc/man/man1/Xnest.1.html

    安装后(它在 Debian/ubuntu/mint/etc 的 apt 中)打开一个终端并执行

    user@localhost:~$ Xnest :1 &
    user@localhost:~$ export DISPLAY=:1
    user@localhost:~$ ssh -Y user@remotehost
    (login, etc)
    user@remotehost:~$ mate-session
    

    或者,您可以打开一个 VT(ctrl+alt+F1 等)并启动一个新的 X 服务器,只需使用X :1然后执行相同的export DISPLAY=:1操作并 sshing。我个人更喜欢 Xnest。

    • 2

相关问题

  • 没有 x 会话的 gnome-keyring 用法

  • Arch Linux:在没有窗口管理器的情况下运行 VirtualBox (VM)

  • xrdb 冒号丢失错误

  • 在不改变分辨率的情况下让事情变得更大?[伴侣]

  • SSH X11 转发仅在使用受信任时有效

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve