如何通过 X11 使用全图形桌面远程登录

vel*_*lis 13 ssh x11 remote-desktop

我有两台机器,都运行 kubuntu:服务器和客户端。我想从客户端连接到服务器并启动完整的图形界面,而不必担心某些命令会以客户端用户身份运行。

所以,ssh -XC工作,我也可以从中启动图形程序就好了。

但是,当我startkde在 ssh 控制台中键入时,它显示“KDE 似乎已经在此显示器上运行”。这是真的,但不适用于同一个用户帐户。

我尝试退出图形界面并从 tty 登录,但随后(不出所料)无法启动任何图形程序,包括 kde。

那么我如何才能做到这一点,以便我可以像使用本地用户登录一样简单地登录?将客户端机器用作哑终端。

Ste*_*itt 12

XDMCP就是为此而设计的。在您的服务器上,您需要在桌面管理器中启用 XDMCP 支持:

然后在您的客户端上,使用以下命令启动 X

X -query ${SERVER_IP}
Run Code Online (Sandbox Code Playgroud)

(使用适当的 IP 地址),并且您的服务器的登录屏幕应该显示在您的客户端上。

  • 这有效,但 XDMCP 意味着您使用的是不支持加密的普通 X11 协议。如果这是一个问题,您需要寻找其他解决方案 (3认同)

Wou*_*lst 5

您可以通过 SSH 会话启动窗口管理器,但您需要确保此时您的 X 服务器没有运行窗口管理器。

这可以通过两种方式实现:

  1. 手动完成所有操作,而不是使用startx或显示管理器:

    首先,启动你的 X 服务器:

    X -nolisten tcp :0
    
    Run Code Online (Sandbox Code Playgroud)

    现在切换到另一个虚拟控制台(例如,按 ctrl+alt+f2),然后键入:

    DISPLAY=:0 ssh -XC <host> startkde
    
    Run Code Online (Sandbox Code Playgroud)

    现在切换回第一个虚拟控制台并正常使用您的 X 会话。这种方法的缺点是它不包括xauth设置(因此理论上远程机器上的每个人都可以连接到您的 X 会话,这是一个安全风险);您可能希望添加该内容。

  2. 使用.xinitrc(对于 startx)或.xsession(对于显示管理器)文件来修改你的窗口管理器:

    如果你已经建立了自己的系统,无密码的SSH的作品,(例如,通过SSH密钥,或通过Kerberos或一些其他的认证机制),您可以添加以下行作为你的最后一行.xinitrc.xsession文件:

    exec ssh -XC <host> startkde
    
    Run Code Online (Sandbox Code Playgroud)

    要记住的是,您添加到这些文件中的任何内容都将被执行,而不是您正常的 X11 会话设置。在某些情况下,您可能需要在登录屏幕上选择“标准 Xsession”选项。

    即使您没有无密码 SSH,只要您已经ssh-askpass安装,这可能仍然有效。如果ssh确定它没有控制终端,但它确实有一个$DISPLAY变量集,它会用它来询问密码。

    这种方法的缺点是登录到“本地”机器变得更加困难。