如果大家觉得本文有用的话,希望能点个赞鼓励一下,十分感谢各位的支持
【转载本文需要附上本文及本文引用的地址链接】
本文的初始版本发布于本人另一网站的博客。
文章目录
前言
1 vnc的安装、启动与配置[1]
1.1 安装vncserver
1.2 启动vncserver
1.3 安装虚拟桌面并配置vncserver
2 进一步给vncviewer权限[2]
2.1. 开放共享桌面
2.2 利用dconf-editor取消加密限制
3 win端下利用vnc访问linux端桌面[1] [2]
3.1 vnc软件的下载[2]
3.2 vnc软件的直接连接[2]
3.3 vnc软件通过虚拟桌面连接
3.4 删除虚拟桌面
3.5 开机自动启动虚拟桌面
4 离线安装软件包[3]
4.1 制作离线源(下载包并建立依赖)
4.2 将离线源设置为离线ubuntu的本地源
5 总结
前言
本文主要参考了以下四篇文章。转载本文需要附上本文链接。
[1] 解决vncviewer连接ubuntu的灰屏问题(虚拟gnome桌面)
[2] 实现Windows直接远程访问Ubuntu 16/18(原生桌面+直接访问)
[3] Ubuntu离线安装软件包
[4] 为 CentOS 与 Ubuntu 制作离线本地源
提示:
[1]讲述了如何解决vnc连接的灰屏问题,只需设置xstartup
的权限和内容即可成功载入虚拟桌面。但是对于部分人群该方法使用后依然会灰屏,这就需要增加一步设置虚拟桌面和xstartup文件,并引入[2]中的dconf-editor
工具,取消requlre-encryption的勾选解决问题。
[2]不仅能解决[1]的问题,而且提供了不需要桌面环境直接使用的方法,但是没法自定义分辨率,因此需要[1]和[2]结合实现。此外,[2]中的安装指令只是vnc的一部分,建议安装vnc4server的完整内容。
[3]则是提供了如何离线安装软件的方法,利用一个相同环境的虚拟机在线安装,再打包成"本地服务器",通过设置本地源从而实现离线安装。由于ubuntu安装deb文件需要大量依赖包同步安装,一个个下载安装一方面由于镶套依赖导致没法安装成功,而且很麻烦,因此这种方案提供了方法。
本文主要分为两部分
(1)如何在线安装vnc并实现远程链接。
(2)如何离线安装软件,然后按照离线的方法,(1)在执行所有安装命令前,只要在相同环境的在线系统
下提前下载好本地源,拷贝至离线系统
并配置好该系统源的source.list后,方可安装。
[提示]:
在线安装只需看1-3节即可
离线安装则需先看第4节学会如何离线安装,再看第1-3节。想直接看ssh离线安装请直接看第4节。离线安装所需的ubuntu16.04的本地离线源(包含ssh,vnc,虚拟桌面,dconf-editor),需要下载的请点击下载地址(提取码:aghd)
若版本不是ubuntu16.04,或者需要自己制作其他安装包,请见4.1,使用方法见4.2。
1 vnc的安装、启动与配置[1]
1.1 安装vncserver
打开终端,输入如下代码安装vnc:
sudo apt-get install vnc4server --allow-unauthenticated #在线安装可不加--allow-unauthenticated
1.2 启动vncserver
右键点击桌面,点击打开终端,输入如下代码并回车,启动vnc:
vncserver
弹出以下内容,":1"表明新建了一个编号为1的虚拟桌面1,windows下vnc输入地址+ip,如192.168.34.54:1,就是表示在ip地址192.168.34.54下连接桌面1,具体连接后续再描述。
New 'root12:1 (root12)' desktop is root12:1
Starting applications specified in /home/root12/.vnc/xstartup
Log file is /home/root12/.vnc/root12:1.log
现在使用vnc会有灰屏问题(如下图所示),需要进一步设置
[图片上传失败...(image-36cd8a-1606618028982)]
1.3 安装虚拟桌面并配置vncserver
(1) 提高vnc权限:打开终端,输入如下代码并回车
chmod +x ~/.vnc/xstartup
(2) 安装虚拟桌面:打开终端,输入如下代码并回车
sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal --allow-unauthenticated
#在线安装可不加--allow-unauthenticated
(3) xstartup文件下修改vnc的默认虚拟桌面:
打开终端,输入如下代码并回车,从而以编辑模式打开xstartup
(其实vi,vim,nano,gedit都可以,权限从强到弱,操作难度从低到高)
sudo gedit ~/.vnc/xstartup
备份原文件后,可以注释掉所有内容(所有内容前加#),然后在后面的空行输入如下代码,并ctrl+S保存文件
#!/bin/bash
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
# [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
# [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
# x-window-manager &
exec gnome-session &
2 进一步给vncviewer权限[2]
2.1. 开放共享桌面
首先,我们先设置Ubuntu的远程控制,将其设置为允许被远程连接,进入系统/首选项-/桌面共享,或者直接搜索桌面共享,如图所示:
[图片上传失败...(image-3b678c-1606618028982)]
将【允许其他人查看您的桌面】这一项勾上,然后在安全那项,勾选【要求远程用户输入此密码】,并设置远程密码。并且我们取消勾选【必须为对本机器的每次访问进行确定】(这样做,是为了被远程的时候不需要再确认,否则每次远程都要人为确认才能被远程,会很繁琐)如图所示:
[图片上传失败...(image-9cedb5-1606618028982)]
2.2 利用dconf-editor取消加密限制
(1) 安装dconf-editor:打开终端,输入如下代码并回车
sudo apt-get install dconf-editor --allow-unauthenticated #在线安装可不加--allow-unauthenticated
(2) 利用dconf-editor更改权限:安装完成之后,我们需要打开dconf-editor工具,在桌面搜索dconf-editor打开,打开之后,依次展开org->gnome->desktop->remote-access,然后取消 “requlre-encryption”的勾选即可。如图所示:
[图片上传失败...(image-2ecdbb-1606618028982)]
[图片上传失败...(image-461313-1606618028982)]
3 win端下利用vnc访问linux端桌面[1] [2]
3.1 vnc软件的下载[2]
大家可以到VNC官网(https://www.realvnc.com/en/connect/download/viewer/)下载最新的版本,根据自己实际情况,选择相对应的版本。其中standalone是免安装便携版,推荐使用这个版本。
此外,也可以使用Windows自带的远程桌面控制工具mstsc,使用vnc-any也可以访问,只不过没vnc清晰。
3.2 vnc软件的直接连接[2]
终端输入ifconfig
并回车,可查看本地ip。也可以右上角设置查看本地ip。
ifconfig
输入我们需要远程控制的PC主机的IP和密码,如图所示:
[图片上传失败...(image-72df8a-1606618028982)]
如果成功连接上了,结果则如图所示:
[图片上传失败...(image-f47e89-1606618028982)]
如果像素比较模糊,则可以vnc界面右键,properties,general的图像品质设置high,scaling设置100%(这样能避免图像发生拉伸)
3.3 vnc软件通过虚拟桌面连接
上述方法的好处是可以直接连接,缺点是没法自定义桌面,在这里提供自定义桌面尺寸的方式。
新建虚拟桌面: vncserver -geometry 宽x高 -depth 色彩深度(颜色丰富度,8-32) :桌面编号
(注意空格),如下面的命令是建立像素为1920x1080的桌面,色彩深度为24,编号为2。值得注意的是,每次关机后虚拟桌面都会消失,需要重新设置,如果要开机自动设置,见3.5。另外,如果较卡,可以设置色彩深度=8。
vncserver -geometry 1920x1080 -depth 24 :2
windows下打开vnc软件设置连接:与3.2唯一的不同是ip地址后面要加:2
3.4 删除虚拟桌面
删除虚拟桌面: vncserver -kill :桌面编号
(注意空格),如下面的命令是删除像素编号为2的虚拟桌面
vncserver -kill :2
3.5 开机自动启动虚拟桌面
参考文章:Linux下vnc的安装、使用以及设置开机启动
(1)创建执行文件
sudo gedit /etc/init.d/vncserver
输入以下内容并保存(ctrl+S):
#!/bin/sh
### BEGIN INIT INFO
# Provides: tightvncserver
# Required-Start: $syslog $remote_fs $network
# Required-Stop: $syslog $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts VNC Server on system start.
# Description: Starts tight VNC Server. Script written by James Swineson.
### END INIT INFO
# /etc/init.d/vncserver
VNCUSER='pi' #可以改成你的用户名
case "$1" in
start)
#以pi用户运行'vncserver :1'指令,如果使用的是其他VNC 直接替换成对应的启动命令即可
su $VNCUSER -c 'vncserver -geometry 1920x1080 -depth 24 :1' #像素1920x1080,可自己调。色深为色彩丰富度,8-24,根据网络情况进行调整。
echo "Starting VNC Server for $VNCUSER"
;;
stop)
su $VNCUSER -c 'vncserver -kill :1'
echo "TightVNC Server stopped"
;;
*)
echo "Usage: /etc/init.d/vncserver {start|stop}"
exit 1
;;
esac
exit 0
(2)然后对该文件添加可执行权限:
sudo chmod 755 /etc/init.d/vncserver
(3)添加到开机启动列表:
sudo update-rc.d vncserver defaults
<, color=grey>(注:取消开机启动:sudo update-rc.d -f vncserver remove
)
<, color=0>设置完成。
4 离线安装软件包[3]
4.1 制作离线源(下载包并建立依赖)
本人已经提前做好离线源(包含ssh,vnc,虚拟桌面,dconf-editor),需要请点击下载地址(提取码:aghd),下载后可直接跳过步骤4.1
复制这段内容后打开百度网盘手机App,操作更方便哦
(1)下载安装包所需deb包: 在相同环境下的在线ubuntu系统下执行以下命令,下载离线安装所需的deb包和相应的依赖包
sudo apt-get -y install 下载指令
下载指令
= vnc4server
, gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
, dconf-editor
。
其实就是利用apt-get的-y子命令可以保证deb包缓存到指定位置/var/cache/apt/archives
目录下。
sudo apt-get update #(有时候不执行该命令更新也可以,如果安装不了报错就要先更新源再下载,否则会额外下载其他的东西)
sudo apt-get -y install 下载指令
#注:制作离线源时建议把系统设置/软件和更新/更新下的`自动检查更新`改为`从不`,不然更新的时候有可能会额外下载许多不需要的deb更新包。
如
sudo apt-get update #(有时候不执行该命令更新也可以,否则会额外下载其他的东西,如果安装时报错,则需要执行该命令更新源再下载,)
sudo apt-get -y install openssh-server #(如果没装ssh可以顺带安装)
sudo apt-get -y install vnc4server
sudo apt-get -y install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
sudo apt-get -y install dconf-editor
注1:如果提示E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) ,E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?,则可能原因有两种,①apt-get前忘记加sudo
,则需重新加上。 ②此外,如果你使用的是克隆虚拟机,也可能会出此问题,需要重新启动电脑。。 ③如果还不行,ps -e | grep apt
查看进程编号,利用sudo kill 进程编号
杀掉相应进程。(见网站) ④如果还是不行,则需要在安装输入sudo apt-get update
更新源,再重新输入安装指令。
注2:关于为什么本人包只有12mb,而部分人的离线包在170mb的原因:
(1)有时候安装不需要sudo apt-get update,这样就不会下载额外的deb包。
(2)建议在线机器先右上角的系统设置/软件安全与更新
,更新频率设置为从不
。否则有时候文件夹/计算机/var/archives会额外缓存很多版本更新的deb包(100+MB)比较占空间。
(3)此外,如果安装openssh-server,前面多打一个空格,也会多下载很多东西(类似于自动下载更新)。不过其他软件安装多打一个空格不一定会多下载其他软件的deb包,只有openssh-server有这个特性。
(2)将deb包拷贝至指定位置并打包:
a.新建一个文件夹,在项目根目录新建文件夹offlinePackage
sudo mkdir /offlinePackage
b.拷贝下载的deb包,将下载的deb包拷贝到上述新建的文件夹下
sudo cp -r /var/cache/apt/archives /offlinePackage
c.修改文件夹权限,修改文件夹的权限,使该文件夹可读可写可执行。(该文件在ubuntu文件系统的计算机
部分)
sudo chmod 777 -R /offlinePackage/
d.建立deb包的依赖关系
sudo dpkg-scanpackages /offlinePackage/ /dev/null |gzip >/offlinePackage/Packages.gz
注:如果出现错误sudo: dpkg-scanpackages: command not found,则需要安装dpkg-dev工具: sudo apt-get install dpkg-dev
e.打包成压缩包,压缩到根目录下。
sudo tar zcvf offlinePackage.tar.gz /offlinePackage/
保存offlinePackage.tar.gz文件到U盘或服务器,需要时拷贝到需要离线安装的系统上。
4.2 将离线源设置为离线ubuntu的本地源
做好离线包后,将离线包里的deb包转移到指定位置,变成本地源。这样安装的时候就把该文件夹(offlinePackage)看做一个"服务器”,下载相应的“安装包”和“依赖包”进行自动配置。
(1)拷贝安装文件:插入U盘或光盘将offlinePackage.tar.gz复制到根目录下,解压到原位置
sudo tar zxvf offlinePackage.tar.gz -C /
(2)修改系统源source.list之前先进行备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.back
(3)将安装包所在的源路径添加到系统源source.list:打开源文件sources.list并编辑,推荐使用gedit或者nano
sudo gedit /etc/apt/sources.list
或
sudo nano /etc/apt/sources.list
注意: nano模式保存方式是ctrl+O后按回车键
(^O), 退出编辑模式是ctrl+X
(^X)
增加一行,内容如下 (注意file:///
后头有一个空格!)
deb file:/// offlinePackage/
添加结果如下图所示
(4)更新系统源: 相当于重新建立对新拷贝进来的deb文件的索引
sudo apt-get update
(5)安装程序
分别安装vnc4server,gnome虚拟桌面以及权限设置软件dconf-editor。
必注意:使用apt-get install -y 软件名,后面一定要带--allow-unauthenticated,因为它是私有的,还没有签名!
sudo apt-get install -y openssh-server --allow-unauthenticated #(如果没装ssh可以顺带安装)
注1:如果要启用ssh,可以输入代码sudo service ssh start
,并查看状态sudo service ssh status
,如果状态显示active则表示运行成功。部分内容参考(1)ubuntu上安装ssh , (2)Ubuntu16.04离线安装openssh-server , (3)Ubuntu16.04 离线安装openssh所需的安装包deb。
注2:不建议使用sshcilent,会报错。建议使用putty(轻量)或Mobaxterm(功能强大,也能传输文件)进行连接与指令,FileZilla Client进行文件传输。
sudo apt-get install -y vnc4server --allow-unauthenticated
sudo apt-get install -y gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal --allow-unauthenticated
sudo apt-get install -y dconf-editor --allow-unauthenticated
注3:关于centOS的配置,与本地服务器的离线源的进一步配置,请见:为 CentOS 与 Ubuntu 制作离线本地源。
安装好后,便可以按照1-3节的内容进行设置与vnc连接了。
5 总结
1-3章主要讲了vnc的在线安装与使用,4章讲如何安装过程变成离线安装。如果1-3章是离线安装,则需要提前配置好本地源,安装的时候apt-get指令改为apt-get -y,安装指令后加--allow-unauthenticated
注:小白补充内容
sudo = 超级权限下执行命令,super do
,比如用apt-get/dpkg命令安装软件、用vi/vim/nano/gedit命令修改关键文件等行为会有安全隐患,需要用到比较深层的权限,需要输入用户密码允许运行。
vi/vim/nano/gedit
类似windows的txt编辑器,从前到后,使用越来越方便,但权限越来越低
apt-get install = ,Advanced Packaging Tools - get install
即安装软件,centOS则是yum
--allow-unauthenticated
相当于增加私人下载权限
【转载本文需要附上本文及本文引用的地址链接】
-
解决vncviewer连接ubuntu的灰屏问题 ↩ ↩ ↩ ↩
-
实现Windows直接远程访问Ubuntu 16/18 ↩ ↩ ↩ ↩ ↩ ↩ ↩ ↩
-
ubuntu远程安装离线包 ↩ ↩