Ubuntu16.04与18.04下如何在离线模式下安装ssh, vncviewer,解决灰屏问题,并实现远程桌面连接

           👍如果大家觉得本文有用的话,希望能点个赞鼓励一下,十分感谢各位的支持

【转载本文需要附上本文及本文引用的地址链接】
本文的初始版本发布于本人另一网站的博客

文章目录

前言
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 制作离线源(下载包并建立依赖)

<font color=dark>  本人已经提前做好离线源(包含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 制作离线本地源

<font size=, color=dark> 安装好后,便可以按照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 相当于增加私人下载权限

【转载本文需要附上本文及本文引用的地址链接】


  1. 解决vncviewer连接ubuntu的灰屏问题

  2. 实现Windows直接远程访问Ubuntu 16/18

  3. ubuntu远程安装离线包

推荐阅读更多精彩内容