vel*_*lis 13 ssh x11 remote-desktop
我有两台机器,都运行 kubuntu:服务器和客户端。我想从客户端连接到服务器并启动完整的图形界面,而不必担心某些命令会以客户端用户身份运行。
所以,ssh -XC工作,我也可以从中启动图形程序就好了。
但是,当我startkde在 ssh 控制台中键入时,它显示“KDE 似乎已经在此显示器上运行”。这是真的,但不适用于同一个用户帐户。
我尝试退出图形界面并从 tty 登录,但随后(不出所料)无法启动任何图形程序,包括 kde。
那么我如何才能做到这一点,以便我可以像使用本地用户登录一样简单地登录?将客户端机器用作哑终端。
Ste*_*itt 12
XDMCP就是为此而设计的。在您的服务器上,您需要在桌面管理器中启用 XDMCP 支持:
如果您正在使用kdm,请寻找
[Xdmcp]
Enable=false
Run Code Online (Sandbox Code Playgroud)
在您结束时kdmrc,更改false为true并重新启动kdm;
如果您正在使用lightdm,请添加
[XDMCPServer]
enabled=true
port=177
Run Code Online (Sandbox Code Playgroud)
到/etc/lightdm/lightdm.conf并重新启动lightdm。
然后在您的客户端上,使用以下命令启动 X
X -query ${SERVER_IP}
Run Code Online (Sandbox Code Playgroud)
(使用适当的 IP 地址),并且您的服务器的登录屏幕应该显示在您的客户端上。
您可以通过 SSH 会话启动窗口管理器,但您需要确保此时您的 X 服务器没有运行窗口管理器。
这可以通过两种方式实现:
手动完成所有操作,而不是使用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 会话,这是一个安全风险);您可能希望添加该内容。
使用.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变量集,它会用它来询问密码。
这种方法的缺点是登录到“本地”机器变得更加困难。