[Linux] Windows 和 Linux 远程桌面连接

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/buildcourage/article/details/78881721

[Linux] Win 10 和 CentOS 7 远程桌面连接

Win 10 远程连接 CentOS 7

1 通过 ssh 连接命令行界面

  1. 在 CentOS 7 中安装 ssh 服务
  2. 在 Win 10 中使用 PuTTY 来通过 ssh 远程连接 CentOS 7 的命令行界面。

2 通过 vnc 连接图形界面

2.1 CentOS 7 配置 vncserver

  1. 在 CentOS 7 中安装 tigervnctigervnc-server

    yum install -y tigervnc tigervnc-server
  2. /lib/systemd/system/[email protected] 复制为 /etc/systemd/system/vncserver@:1.service

    cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:\1.service

    新文件的 :1 表示将配置 vnc 端口号为 1 的 vnc server desktop,使远程用户可以通过 X.X.X.X:1 来登录本机图形界面,其中 X.X.X.X为本机 IP 地址,可以通过改变数字 i 来配置多个 vncserver@:i.service

    该配置文件的注释中有如何快速开始的教程:

    # Quick HowTo:
    # 1. Copy this file to /etc/systemd/system/[email protected]
    # 2. Replace <USER> with the actual user name and edit vncserver
    # parameters appropriately
    # (“User=<USER>” and “/home/<USER>/.vnc/%H%i.pid”)
    # 3. Run systemctl daemon-reload
    # 4. Run systemctl enable vncserver@:<display>.service

  3. 进入 /etc/systemd/system/ 目录,修改 vncserver@:1.service 文件的配置,上面的注释只说将 <USER> 替换为合适的用户名,并设置相应的正确参数。但是我在实际配置过程中因为这里配置不对,会造成 vnc server 启动失败,远程连接失败等各种问题。最后,经过多次尝试以及参考网上博客,我对本文件做出如下修改可以达到基本正确的效果:

    原文件需修改内容:

    [Service]
    Type=forking
    User=<USER>

    # Clean any existing files in /tmp/.X11-unix environment
    ExecStartPre=-/usr/bin/vncserver -kill %i
    ExecStart=/usr/bin/vncserver %i
    PIDFile=/home/<USER>/.vnc/%H%i.pid
    ExecStop=-/usr/bin/vncserver -kill %i

    针对 root 修改内容

    [Service]
    Type=simple
    User=root
    # Clean any existing files in /tmp/.X11-unix environment
    ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
    ExecStart=/bin/sh -c ‘/usr/bin/vncserver %i’
    PIDFile=/root/.vnc/%H%i.pid
    ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’

    扫描二维码关注公众号,回复: 4420656 查看本文章

    针对 普通用户(如tong) 修改内容

    [Service]
    Type=simple
    User=tong

    # Clean any existing files in /tmp/.X11-unix environment

    ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
    ExecStart=/bin/sh -c ‘/usr/bin/vncserver %i’
    PIDFile=/home/tong/.vnc/%H%i.pid
    ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’

  4. 需要注意的是,原 vncserver@:1.service 文件里有一行 Type=forking,需要将其改成 Type=simple,否则启动 vncserver 服务会失败。

  5. 执行下列命令,重新加载服务,并将 vncserver@:1.service 服务添加到开机启动:

    systemctl daemon-reload 
    systemctl enable vncserver@:1.service
  6. 开启 vncserver@:1.service 服务:

    systemctl start vncserver@:1.service

    重启 vncserver@:1.service 服务:

    systemctl restart vncserver@:1.service
  7. 配置防火墙允许 vnc-server 服务:

    firewall-cmd --permanent --add-service=vnc-server
    firewall-cmd --reload
  8. 某一用户身份(比如 root)下可以通过 vncpasswd 设置该用户在 vnc server 上的密码。

正常情况下,以上步骤完成后,本机所配置的 :1 端口的 vncserver 服务将会正常运行启动(包括每次重开机后),远程用户可以通过 X.X.X.X:1 以 root 用户身份,使用相应的 vnc 密码来登录本机的图形界面。

2.2 CentOS 7 vncserver 其他命令

  1. 如果某一身份的用户之前没有设置过密码,那么在第一次运行 vncserver 命令时,会要求输入密码:

    [root@localhost system]# vncserver

    You will require a password to access your desktops.

    Password:

    在输入密码后,vncserver 会自动创建该用户身份的新的 vnc server desktop(新 vnc 端口),及相关配置文件:

    New ‘localhost.localdomain:1 (root)’ desktop is localhost.localdomain:1

    Creating default startup script /root/.vnc/xstartup
    Creating default config /root/.vnc/config
    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/localhost.localdomain:1.log

  2. 再次在相同用户下执行 vncserver ,不用再输入密码,并自动创建新的 vnc desktop(新 vnc 端口)。

    [root@localhost ~]# vncserver

    New ‘localhost.localdomain:3 (root)’ desktop is localhost.localdomain:3

    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/localhost.localdomain:3.log

  3. 通过 vncserver -list 命令可以查看当前用户下有效的 vnc 端口:

    [root@localhost ~]# vncserver -list

    TigerVNC server sessions:

    X DISPLAY # PROCESS ID
    :1 8338
    :3 10160

    vnc 端口号并不是实际的网络端口,而是从 1 开始递增的逻辑端口号,在客户端通过 vnc server 的 IP 地址以及该逻辑 vnc 端口号连接相应的 vnc server desktop 图形界面。

  4. 通过 vncserver -kill :i 命令可以删除 vnc 端口号为 i 的 vnc server desktop。

  5. 这里需要注意的一点是,有时运行 vncserver 时会出现一下警告:

    [root@wayne .X11-unix]# vncserver

    Warning: wayne.buptlab:4 is taken because of /tmp/.X11-unix/X4
    Remove this file if there is no X server wayne.buptlab:4

    New ‘wayne.buptlab:5 (root)’ desktop is wayne.buptlab:5

    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/wayne.buptlab:5.log

    这个警告表示在 /tmp/.X11-unix/ 下已经存在 X4 文件,这个文件表示之前存在过 vnc 端口号为 4 的 vnc server desktop,但可能是由于不正常关闭等原因使得这个端口号发生了异常,vnc server 无法再使用该端口号。

    虽然 vncserver 命令会自动创建新端口,但是这一警告对于配置 vncserver@:i.service 服务却有严重影响,比如我希望配置 vncserver@:3.service 服务,希望远程用户可以通过 X.X.X.X:3 来登录本机,但如果因为异常原因 /tmp/.X11-unix/ 下已经存在 X3,那么 vncserver@:3.service 服务在将无法正常启动运行(包括重启开机后),无法自动创建 vnc 端口号为 3 的 vnc server desktop。

    目前我找到的解决方法也简单粗暴,那就是删除 /tmp/.X11-unix/ 下的异常 Xi 文件(甚至直接全部删除以可以,下次重启开机时 vncserver@:i.service 会重新新建对应端口号的 Xi 文件。

2.3 Win 10 远程登录 CentOS 7

  1. win 10 使用 VNC Viewer 软件,输入有效的 vnc server 地址(X.X.X.X:1),便可以登录相应 IP 地址(X.X.X.X)和 vnc 端口(:1)的远程 CentOS 7 主机。

CentOS 7 远程连接 Win 10 Pro

  1. CentOS 7 安装 rdesktop 和 tsclient,其中rdesktop是基于命令行的工具,tsclient只是一个图形化的界面,依赖于rdesktop:

    yum install -y rdesktop
    yum install tsclient
  2. Win10 Pro 在 “我的电脑->属性->远程” 中配置“远程桌面”,启用“允许远程连接到此计算机”,并取消勾选“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”(若不取消勾选 rdesktop 将不能远程连接 Win 10)。

  3. CentOS 命令行可以使用以下命令远程连接 Win 10:

    rdesktop -f -a 16 X.X.X.X
  4. 需要注意的问题是 Win 10 家庭版没有远程桌面的功能。而我的电脑正好是 Win 10 家庭版,导致了我的电脑始终不能被远程桌面连接。所以如果想让自己的电脑能够被远程桌面连接,请使用 Win 10 专业版。

参考资料

  1. CenOS 配置 vncserver(好):

  2. Windows 远程连接 CentOS:

  3. 警告 /tmp/.X11-unix/Xi :

  4. CentOS远程连接 Windows:

  5. Windows 和 CentOS 互相远程桌面:

  6. 比较 Windows 版本功能:

猜你喜欢

转载自blog.csdn.net/buildcourage/article/details/78881721
今日推荐