ein*_*lum 5 xorg remote remote-desktop freerdp
在 Windows 机器上,如果一台机器 A 运行远程桌面服务,而另一台机器 B(实际上不一定是 Windows)运行远程桌面客户端 - 那么 B 上的用户可以“窃取”会话的控制权A,查看在那里打开的应用程序窗口并与之交互。请注意,如果没有现有会话,RDP 还允许您打开一个新会话,但这不是问题所在。
我的问题:我怎样才能在 A 是一台 Linux 机器的情况下实现同样的目标,运行一个 X 服务器,并且正在进行 X 会话。
笔记:
要控制正在运行的 X 会话,您需要将 VNC 服务器配置为连接到与 X 相同的显示器。通常,X 将连接到第一个显示器 - :0
。
您还需要该 X 会话的 X 权限。这可以通过访问远程显示管理器正在使用的 X 权限文件找到。这取决于您的显示管理器,可以使用ps aux
和找到grep
。例如:psaux | grep Xorg
给你类似的东西:
/usr/libexec/Xorg -background none :0 -seat seat0 -auth /var/run/lightdm/root/:0 -listen tcp vt1 -noswitch
Run Code Online (Sandbox Code Playgroud)
请注意该-auth
选项,因为 VNC 需要它。安装后,您需要root
在远程计算机上运行类似以下内容x11vnc
:
/usr/bin/x11vnc -norc -forever -shared -bg -autoport 5900 -auth /var/run/lightdm/root/:0
Run Code Online (Sandbox Code Playgroud)
最简单的方法是创建一个在启动时为您运行的服务。在使用 的发行版上systemd
,创建一个/etc/systemd/system/x11vnc.service
类似于以下内容的文件:
[Unit]
Description=VNC Server for X11
Requires=display-manager.service
After=display-manager.service
[Service]
Type=forking
ExecStart=/usr/bin/x11vnc -norc -forever -shared -bg \
-autoport 5900 \
-rfbauth /etc/x11vnc.pass \
-o /var/log/x11vnc.log \
-auth /var/run/lightdm/root/:0
[Install]
WantedBy=graphical.target
Run Code Online (Sandbox Code Playgroud)
请注意该-rfbauth
选项。您需要事先使用以下方法创建密码文件:
$ sudo x11vnc -storepasswd /etc/x11vnc.pass
Run Code Online (Sandbox Code Playgroud)
或者,如果您觉得不需要受密码保护的 VNC 会话,则只需删除该-rfbauth
行即可。
启动时启用:
$ sudo systemctl enable x11vnc.service
Run Code Online (Sandbox Code Playgroud)
手动启动它:
$ sudo systemctl start x11vnc.service
Run Code Online (Sandbox Code Playgroud)
您现在可以使用 VNC 客户端连接到远程计算机并接管会话。
归档时间: |
|
查看次数: |
2351 次 |
最近记录: |