本教程描述了如何在Debian 9上安装和配置VNC服务器。我们还将向您展示如何创建SSH隧道并安全地连接到VNC服务器。
先决条件
在继续本教程之前,请确保您以具有sudo特权的用户身份登录。
安装桌面环境
你的Debian server可能没有安装桌面环境,第一步是安装轻量级桌面环境。
Debian存储库中有几个桌面环境(德)可用,我们将使用Xfce作为您选择的桌面环境。它快速,稳定,轻量级,非常适合在远程服务器上使用,
使用以下命令更新软件包索引并在Debian server上安装Xfce:sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
根据你的系统,下载和安装Xfce软件包需要一些时间,
安装VNC服务器
Debian存储库中还有几种不同的VNC服务器,例如TightVNC,TigerVNC和x11vnc。每个VNC服务器在速度和安全性方面都有优缺点。
我们将使用TigerVNC,这是一个高性能VNC服务器。要在Debian服务器上安装TigerVNC,请发出以下命令:sudo apt install tigervnc-standalone-server tigervnc-common
安装VNC服务器后,运行vncserver命令创建初始配置并设置密码,运行以下命令时不要使用sudo:vncserver
系统将提示你输入并确认密码,是否将它设置为仅查看密码,如果选择设置仅视图密码,用户将无法与VNC实例与鼠标和键盘交互。You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth: file /home/linuxize/.Xauthority does not exist
New 'debian9.localdomain:1 (linuxize)' desktop at :1 on machine debian9.localdomain
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/debian9.localdomain:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/linuxize/.vnc/passwd :1 to connect to the VNC server.
首次运行vncserver命令时,它在~/ . vnc目录中创建并存储密码文件,
在例子中,服务器运行在TCP端口5901 ( 5900+1 ),如果使用vncserver创建第二个实例,它在下一个空闲端口上运行换句话说,:2,这意味着服务器在端口上运行。
需要注意的是,当使用VNC服务器时,:X是一个显示端口,引用5900+X。
在继续下一步之前,使用带有vncserver命令的-kill选项和server number作为参数停止VNC实例,在这种情况下,服务器在端口5901 ( :1 )中运行,因此使用:vncserver -kill :1Killing Xtigervnc process ID 6677... success!
配置VNC服务器
现在,Xfce和TigerVNC都已安装在机器上,我们需要配置TigerVNC以使用Xfce,为此,创建以下文件:nano ~/.vnc/xstartup~/.vnc/xstartup#!/bin/shunset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
完成后,保存并关闭文件,以上脚本将在你启动或重新启动TigerVNC服务器时自动执行。
运行以下chmod命令以确保权限正确:chmod u+x ~/.vnc/xstartup
如果要将其他选项传递给VNC服务器,请打开~/.vnc/config文件并每行添加一个选项,以下是一个示例:~/.vnc/configgeometry=1920x1080
dpi=96
创建Systemd单元文件
systemd单元文件允许根据需要轻松启动,停止和重新启动VNC服务。
打开文本编辑器,并将以下配置复制并粘贴到其中,不要忘记在第7行更改用户名以匹配你的用户名,sudo nano /etc/systemd/system/vncserver@.service/etc/systemd/system/vncserver@.service[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=linuxizePAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
保存并管理文件。sudo systemctl daemon-reload
接下来,启用服务:sudo systemctl enable vncserver@1.service
1在@符号之后定义了VNC服务将在它上运行的显示端口,正如我们在上一节讨论的,因为使用1 VNC服务器将监听端口5901。
通过执行以下命令启动VNC服务:sudo systemctl start vncserver@1.service
确认服务已成功启动,方式为:sudo systemctl status vncserver@1.service● vncserver@1.service - Remote desktop service (VNC)
Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-10-03 05:23:33 PDT; 51s ago
Process: 7063 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 7071 (vncserver)
Tasks: 0 (limit: 4915)
CGroup: /system.slice/system-vncserver.slice/vncserver@1.service
‣ 7071 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg
连接到VNC服务器
VNC不是加密协议,可以受数据包嗅探,建议的方法是创建一个SSH隧道,该隧道将安全地将流量从端口5901上的本地计算机转发到同一端口上的服务器。
在Linux和macOS上设置SSH隧道
如果您在计算机上运行Linux,macOS或任何其他基于Unix的操作系统,则可以使用ssh命令轻松创建SSH隧道:ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
系统将提示你输入用户密码。
别忘了用你的用户名和服务器的IP地址替换username和server_ip_address,
在Windows上设置SSH隧道
如果运行Windows,可以使用Putty SSH客户端。
打开Putty,然后在Host name or IP address 字段字段字段。
在Connection菜单下,展开ssh并选择Tunnels,在字段中输入VNC服务器端口( 5901 ),并在server_ip_address:5901字段中输入Destination,然后单击按钮
返回到Session页面以保存设置,这样你不必每次都输入它们,现在你需要做的就是选择保存的会话并通过单击Open按钮登录到远程服务器。
使用Vncviewer连接
现在你已经设置了SSH隧道,现在是时候打开Vncviewer并连接到localhost:5901上的VNC服务器了。
可以使用VNC查看器,如TigerVNC,TightVNC,RealVNC,UltraVNC,Vinagre。
在本例中,使用TigerVNC,打开VNC查看器,输入localhost:5901,然后单击Connect按钮。
在出现提示时输入密码,您将看到默认的Xfce桌面。
此时,你已经通过VNC成功连接到服务器,现在,你可以使用键盘和鼠标从本地计算机开始与远程XFCE桌面交互。
结束语
到目前为止,应该有一个VNC服务器启动并运行,你可以使用图形界面从本地计算机轻松管理Debian 9服务器。
要配置VNC服务器为多个用户启动显示,请创建初始配置并使用vncserver命令设置密码,你还需要使用不同的端口创建新的服务文件。
有问题请随时留言。