0%

Ubuntu配置VNC远程桌面连接Windows电脑

Ubuntu配置VNC远程桌面连接Windows电脑

  • 参考指南
  • 考虑安装xrdp,通过sudo apt-get install xrdp安装
  • 安装好之后再安装deconf-editor,也就是sudo apt-get install dconf-editor安装
  • deconf-editor中关闭org-gnome-desktop-remote-access下面的requlre-encryption即可
  • 安装好之后配置vnc服务的开机自启动
  • 参考这篇博客
  • https://blog.csdn.net/qq_40723748/article/details/120013808
  • 主要就是要在/etc/systemd/user目录下创建一个systemd服务文件, 命名为user-defined.service
  • 这个文件具有固定的格式,如下
[Unit]
After=network.service

[Service]
ExecStart=/home/<username>/<usershell>.sh
ExecStop=echo "anbox-session-manager is running"

[Install]
WantedBy=default.target
  • 其中将usernameusershell替换为自己的用户名和新建的脚本
  • 自己新建的脚本的第一行一定要注意带有#!/bin/bash
  • 这个脚本启动过程中出错的话是不会报错的,比较难debug
  • 然后使用sudo chmod赋予自己新建的.sh文件和user-defined.service权限
sudo chmod 744 ~/test.sh
sudo chmod 664 /etc/systemd/user/user-defined.service
  • 然后调用以下两行刷新系统服务
sudo systemctl daemon-reload
systemctl --user enable user-defined.service
  • 如果上述方法不行的话采用这篇博客的内容博客
  • 将service文件创建到/etc/systemd/system/user-defined.service
  • 然后开启服务直接sudo systemctl enable user-defined.service即可,避免报错
  • 该服务不可以简单的用系统的Service跟随Network启动,因为此时桌面还没有启动,会导致VNC找不到用户界面而启动失败

    使用/etc/init/<文件名>.conf

  • 参考

然后使用windows自带的远程桌面连接,在系统没有登陆的前提下进行远程桌面,否则会黑屏

  • image-20220303180321664

  • 此处保持设置不变,输入linux的用户名和密码

  • 注意,假如卡顿的话可以修改设置为

  • 点击最下的显示选项,点击体验,修改为LAN,会变流畅一些

  • image-20220303180359964

  • sudo reboot之后远程主机不需要登陆直接链接即可

  • image-20220303181038496

  • image-20220303181046174

如果Ubuntu没有自带VNC远程桌面

Ubuntu端

  • 参考
  • 安装x11vnc sudo apt-get install x11vnc
  • 然后设置密码 x11vnc -storepasswd
  • 将其保存到~/.vnc/passwd之后即可
  • 给予文件~/.vnc/passwd全部权限(777)即可不需要sudo也可以使用x11vnc的密码
    • x11vnc -forever -shared -rfbauth ~/.vnc/passwd -rfbport 5901
    • 上述语句中指定了端口为5901,也可以自己修改为合适的端口

      Nvidia Jetson设备

  • 参考

    Windows端

  • VNCViewer官网下载软件 此处
  • 找到对应的端口链接即可
  • 解决部分Windows防火墙导致的904问题参考
  • picture 1

    sudo不需要密码

  • 参考

    Linux执行一次性任务和循环任务

  • 一次性任务参考at
  • 循环任务使用cron
  • 参考
  • cron参考
  • at参考
  • 查看Linux的任务(service):
    • systemctl -l

      实现Linux开机延时启动

  • at非交互式添加任务参考
  • echo "需要执行的shell命令" | at 时间
  • 一个可能的思路:
    • user-defined.service中执行一个shell脚本(注意第一行必须是#!/bin/bash) ,这个脚本执行一个非交互式向at添加命令的语句(带有一定的延迟),但是这种方法可能并不成功,因为at的时间有一些问题
    • 之所以不直接把这句话放在service里执行是可能会影响echo的解析导致不能正确执行
    • 总之不建议在service里直接执行脚本
  • 但是x11vnc似乎并不支持开机自带启动,否则会导致权限问题(即使密码文件已经给了777权限
  • 修改参考
  • 验证是否启动的方法
    • sudo netstat -an | grep <端口号>
    • ps -aux|grep vnc

      Linux的target

  • 参考
  • 查看依赖关系systemctl list-dependencies multi-user.target