第5章
配置与应用远程服务



作为一个服务器运维管理人员,经常要登录Linux服务器查看服务器是否正常运行,但是,服务器通常不在本地(可能位于分公司或ISP的托管机房)或者分散在不同的地理位置上,因此常常要借助远程控制的方式对这些远程服务器进行管理。在CentOS Linux系统中,一般采用Telnet、SSH以及VNC服务实现远程控制,本章的主要目的是实现这些远程服务的配置和使用方法。





5.1配置网络服务
5.1.1配置网卡IP地址

本章将学习如何在Linux系统上配置服务。但是在此之前,必须先保证主机之间能够顺畅地通信。如果网络不通,即便服务部署得再正确,用户也无法顺利访问,所以,配置网络并确保网络的连通性是学习部署Linux服务之前的最后一个重要知识点。

在4.1节讲解了如何使用Vim文本编辑器来配置网络参数。其实,在CentOS 7系统中有至少5种网络的配置方法,首先
使用nmtui命令来配置网络,相当于RHEL 5、RHEL 6版本中的setup命令,其具体的配置步骤如图51~图57所示。
执行nmtui命令运行网络配置工具。


图51选中“编辑连接”并按Enter键




图52选中要编辑的网卡名称,然后单击“编辑”按钮




第
5
章
配置与应用远程服务

Linux服务器运维管理(第2版)




图53把网络IPv4的配置方式改成手动




图54单击“显示”按钮,显示信息配置框




图55填写IP地址




图56单击“确定”按钮保存配置




图57单击“退出”按钮退出


在RHEL 5、RHEL 6系统及其他大多数早期的Linux系统中,网卡的名称一直都是eth0、eth1、eth2、…,但在CentOS 7.5中则变成了类似于ens33这样的名字。不过除了网卡的名称发生变化之外,其他几乎一切照旧,因此这里演示的网络配置实验完全可以适用于各种版本的Linux系统。
现在,在服务器主机的网络配置信息中填写IP地址“192.168.88.188/24”。
至此,在Linux系统中配置网络IP地址的步骤完成。


图58激活网卡


需要注意的是,在安装CentOS 7系统时默认没有激活网卡。需要使用Vim编辑器将网卡配置文件中的ONBOOT参数修改成yes,这样在系统重启后网卡就被激活了,如图58所示。

【vim /etc/sysconfig/network-scripts/ifcfg-ens33】



当修改完Linux系统中的服务配置文件后,并不会对服务程序立即产生效果。要想服务程序获取到最新的配置文件,需要使用“systemctl restart network”命令手动重启相应的服务。
5.1.2配置网卡负载均衡

一般来讲,生产环境必须提供7×24小时的网络传输服务。借助于网卡负载均衡技术,不仅可以提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。假设对两块网卡实施了负载均衡技术,这样在正常工作中它们会共同传输数据,使得网络传输的速度变得更快; 而且即使有一块网卡突然出现了故障,另外一块网卡便会立即自动顶替上去,保证数据传输不会中断。
下面介绍如何绑定网卡。
第1步: 在虚拟机系统中再添加一块网卡设备,请确保两块网卡都处在同一个网络连接中(即网卡模式相同),如图59所示。处于相同模式的网卡设备才可以进行网卡绑定,否则这两块网卡无法互相传送数据。


图59在虚拟机中再添加一块网卡设备



第2步: 使用Vim文本编辑器来配置网卡设备的绑定参数。需要对参与绑定的网卡设备逐个进行“初始设置”。需要注意的是,这些原本独立的网卡设备此时需要被配置成为一块“从属”网卡,服务于“主”网卡,不应该再有自己的IP地址等信息。在进行了初始设置之后,它们就可以支持网卡绑定了。

【vim /etc/sysconfig/network-scripts/ifcfg-ens33】

TYPE=Ethernet

BOOTPROTO=none

ONBOOT=yes

USERCTL=no

DEVICE=ens33

MASTER=bond0

SLAVE=yes

【vim /etc/sysconfig/network-scripts/ifcfg-ens34】

TYPE=Ethernet

BOOTPROTO=none

ONBOOT=yes

USERCTL=no

DEVICE=ens34

MASTER=bond0

SLAVE=yes

还需要将绑定后的设备命名为bond0并把IP地址等信息填写进去,这样当用户访问相应服务的时候,实际上就是由这两块网卡设备在共同提供服务。

【vim /etc/sysconfig/network-scripts/ifcfg-bond0】

TYPE=Ethernet

BOOTPROTO=none

ONBOOT=yes

USERCTL=no

DEVICE=bond0

IPADDR=192.168.88.188

PREFIX=24

DNS=192.168.88.1

NM_CONTROLLED=no

第3步: 让Linux内核支持网卡绑定驱动。常见的网卡绑定驱动有三种模式: mode0、mode1和mode6。下面以绑定两块网卡为例,讲解使用的情景。
(1) mode0(平衡负载模式): 平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。
(2) mode1(自动备援模式): 平时只有一块网卡工作,在它故障后自动替换为另外的网卡。
(3) mode6(平衡负载模式): 平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。

下面使用Vim文本编辑器创建一个用于网卡绑定的驱动文件,使得绑定后的bond0网卡设备能够支持绑定技术; 同时定义网卡以mode6模式进行绑定,且出现故障时自动切换的时间为100ms。

【vim /etc/modprobe.d/bond.conf】

alias bond0 bonding

options bond0 miimon=100 mode=6

第4步: 使用“systemctl restart network”命令重启网络服务后网卡绑定操作即可成功。使用“ifconfig”命令查看IP地址信息,正常情况下只有bond0网卡设备才会有IP地址等信息,如图510所示。



可以在本地主机执行“ping 192.168.88.188”命令检查网络的连通性。为了检验网卡绑定技术的自动备援功能,突然在虚拟机硬件配置中随机移除一块网卡设备,使用ping命令可以非常清晰地看到网卡切换的过程(一般只有1个数据丢包)。然后另外一块网卡会继续为用户提供服务。


图510查看网卡绑定信息







5.2配置远程服务
5.2.1配置Telnet服务

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。Telnet可以让我们坐在自己的计算机前通过Internet登录到另一台远程计算机上,这台计算机可以是在隔壁的房间里,也可以是在地球的另一端。当登录上远程计算机后,本地计算机就等同于远程计算机的一个终端,我们可以用自己的计算机直接操纵远程计算机,享受远程计算机本地终端同样的操作权限。

Telnet因为其安全性差的特性,而在安装操作系统时不会默认安装。下面将从配置本地安装开始,一步步完成Telnet的配置。
第1步: 挂载光盘。
先将光盘放入光驱,然后使用如下命令挂载光盘到系统中。

mount /dev/cdrom /mnt

第2步: 配置YUM源。
YUM安装解决了软件的依赖性问题,所以一般软件的安装采用YUM的方式安装,但在安装之前必须配置好YUM源。进入YUM源配置目录,建立备份文件夹bak,然后移动原有的配置文件到备份文件夹中,最后再编辑自己的YUM源repo文件。

cd /etc/yum.repos.d/

mkdir /etc/yum.repos.d/bak

mv /etc/yum.repos.d/Cent*/etc/yum.repos.d/bak/

vim/etc/yum.repos.d/local.repo(必须是.repo为后缀)

local.repo的具体内容如下。

[local_server] #库名称

name=This is a local repo#名称描述

baseurl=file:///mnt/#YUM源地址,光盘的挂载点

enabled=1#是否启用该YUM源,0为不启用

gpgcheck=0#GPG=KEY 设置为不检查

编辑完成后按Esc键输入“:wq”保存退出。
第3步: 安装客户端以及服务器端软件。

在安装Telnet前先检查系统是否安装了telnetserver和xinetd。

rpm qa telnetserver: 查询telnetserver软件的安装信息。
rpm qa xinetd: 查询xinetd软件的安装信息。
如果没有安装,则使用yum命令安装。
yum y install telnetserver.x86_64: 安装Telnet服务器端。
yum y install telnet.x86_64: 安装Telnet客户端。
yum y install xinetd.x86_64: 安装Telnet的守护进程。
安装完成后,再次进行查询,可以看到Telnet的相关软件信息。
第4步: 启动服务。
配置并启动Telnet。xinetd和telnet必须设置开机启动,否则无法启动Telnet服务。
systemctl enable xinetd.service: 设置xinetd服务开机启动。
systemctl enable telnet.socket: 设置telnet服务开机启动。
接下来启动服务。
systemctl start telnet.socket: 启动telnet服务。
systemctl start xinetd: 启动xinetd服务。
第5步: 配置防火墙规则。
firewallcmd permanent addport=23/tcp: 打开telnet服务的23号端口。
firewallcmd reload: 重启防火墙。
第6步: 远程登录。

(1) 使用PuTTY远程登录。PuTTY是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。较早的版本仅支持Windows平台,在最近的版本中开始支持各类UNIX平台,并打算移植至Mac OS X上。除了官方版本外,有许多第三方的团体或个人将Pu
TTY移植到其他平台上,例如以Symbian为基础的移动电话。PuTTY为一个开放源代码软件,主要由Simon Tatham维护,使用MITLicence授权。随着Linux在服务器端的广泛应用,Linux系统管理越来越依赖于远程。在各种远程登录工具中,Pu
TTY是其中出色的工具之一。PuTTY是一个免费的、Windows x86平台下的Telnet、SSH和rlogin客户端,但是功能丝毫不逊色于商业的Telnet类工具。

打开PuTTY软件,如图511所示。


图511PuTTY软件界面


单击Open按钮,输入Linux系统中的普通用户名与密码,以yhy用户远程Telnet到主机的效果如图512所示。


图512Telnet登录效果图



(2) 使用SecureCRT远程登录。SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。

SecureCRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具。通过使用内含的VCP命令行程序可以进行加密文件的传输。它具有流行CRTTelnet客户机的所有特点,包括: 自动注册,对不同主机保持不同的特性,打印功能,颜色设置,可变屏幕尺寸,用户定义的键位图,能从命令行中运行或从浏览器中运行等。其他特点包括: 文本手稿,易于使用的工具条,用户的键位图编辑器,可定制的ANSI颜色等。SecureCRT的SSH协议支持DES、3DES和RC4密码以及RSA加密。SecureCRT快速连接的设置如图513所示。


图513SecureCRT快速连接设置界面


选择“协议”为Telnet,填写远程主机的主机名为远程的IP地址,端口默认为23,登录成功的界面如图514所示。


图514SecureCRT登录成功界面



(3) 微软的系统从Windows 7开始默认不会安装Telnet客户端,因此需要手动进行安装(如安装了请忽略),打开程序管理→启用或关闭Windows功能,勾选“Telnet客户端”,如图515所示,
单击“确定”按钮进行安装,安装完成后打开CMD,输入Telnet IP地址,也可Telnet远程登录到Linux系统中。

第7步: 配置允许ROOT用户登录。

因为Telnet在传输数据时采用明文的方式,包括用户名和密码,所以数据在传输的过程中很容易被截取和篡改,所以系统默认ROOT用户不可以Telnet到远程的服务器上,而只允许普通用户Telnet到远程的服务器上。因此需要修改以下配置文件/etc/securetty。

vim /etc/securetty

在末尾添加如下两行: 

pts/0

pts/1

保存退出,然后再次以ROOT用户登录,即可成功。


图515Windows 7安装Telnet客户端


5.2.2配置sshd服务

SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。在此之前,一般使用FTP或Telnet进行远程登录。但是因为它们以明文的形式在网络中传输账户密码和数据信息,因此很不安全,很容易受到黑客发起的中间人攻击,轻则篡改传输的数据信息,重则直接抓取服务器的账户密码。

想要使用SSH协议来远程管理Linux系统,则需要部署配置sshd服务。sshd是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供以下两种安全验证的方法。
(1) 基于口令的验证——用账户和密码来验证登录。
(2) 基于密钥的验证——需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较; 该方式相比较来说更安全。

前文曾多次强调“Linux系统中的一切都是文件”,因此在Linux系统中修改服务程序的运行参数,实际上就是在修改程序配置文件的过程。sshd服务的配置信息保存在/etc/ssh/sshd_config文件中。运维人员一般会把保存着最主要配置信息的文件称为主配置文件,而配置文件中有许多以井号开头的注释行,要想让这些配置参数生效,需要在修改参数后再去掉前面的井号。sshd服务配置文件中包含的重要参数如表51所示。


表51sshd服务配置文件中包含的参数以及作用



参数作用

Port 22默认的sshd服务端口
ListenAddress 0.0.0.0设定sshd服务器监听的IP地址
Protocol 2SSH协议的版本号
HostKey /etc/ssh/ssh_host_keySSH协议版本为1时,DES私钥存放的位置
HostKey /etc/ssh/ssh_host_rsa_keySSH协议版本为2时,RSA私钥存放的位置
HostKey /etc/ssh/ssh_host_dsa_keySSH协议版本为2时,DSA私钥存放的位置
PermitRootLogin yes设定是否允许ROOT管理员直接登录
StrictModes yes当远程用户的私钥改变时直接拒绝连接
MaxAuthTries 6最大密码尝试次数
MaxSessions 10最大终端数
PasswordAuthentication yes是否允许密码验证
PermitEmptyPasswords no是否允许空密码登录(很不安全)

在CentOS 7系统中,已经默认安装并启用了sshd服务程序。接下来使用ssh命令进行远程连接,其格式为“ssh [参数]主机IP地址”。要退出登录则执行exit命令。

ssh 192.168.88.188

然后输入远程主机ROOT管理员的密码即可远程登录到远程主机。

exit

如果禁止以ROOT管理员的身份远程登录到服务器,则可以大大降低被黑客暴力破解密码的概率。下面进行相应配置。首先使用Vim文本编辑器打开sshd服务的主配置文件,然后把第48行#PermitRootLogin yes参数前的井号(#)去掉,并把参数值yes改成no,这样就不再允许ROOT管理员远程登录了。记得最后保存文件并退出。

【vim /etc/ssh/sshd_config】 

………………省略部分输出信息………………

 46 

 47  #LoginGraceTime 2m

 48 PermitRootLogin no

 49  #StrictModes yes

 

………………省略部分输出信息………………

主要注意的是一般的服务程序并不会在配置文件修改之后立即获得最新的参数。如果想让新配置文件生效,则需要手动重启相应的服务程序。最好也将这个服务程序加入开机启动项中,这样系统在下一次启动时,该服务程序便会自动运行,继续为用户提供服务。

systemctl restart sshd

systemctl enable sshd

这样一来,当ROOT管理员再来尝试访问sshd服务程序时,系统会提示不可访问的错误信息。虽然sshd服务程序的参数相对比较简单,但这就是在Linux系统中配置服务程序的正确方法。

【ssh 192.168.88.188】

root@192.168.88.188's password:此处输入远程主机root管理员的密码

Permission denied, please try again.

5.2.3安全密钥验证

加密是对信息进行编码和解码的技术,它通过一定的算法(密钥)将原本可以直接阅读的明文信息转换成密文形式。密钥即是密文的钥匙,有私钥和公钥之分。在传输数据时,如果担心被他人监听或截获,就可以在传输前先使用公钥对数据加密处理,然后再行传送。这样,只有掌握私钥的用户才能解密这段数据,除此之外的其他人即便截获了数据,一般也很难将其破译为明文信息。
总之,在生产环境中使用密码进行口令验证终归存在着被暴力破解或嗅探截获的风险。如果正确配置了密钥验证方式,那么sshd服务程序将更加安全。下面进行具体的配置,其步骤如下。
第1步: 在客户端主机中生成“密钥对”。

【ssh-keygen】

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):按Enter键或设置密钥的存储路径

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase): 直接按Enter键或设置密钥的密码

Enter same passphrase again: 再次按Enter键或设置密钥的密码

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

40:32:48:18:e4:ac:c0:c3:c1:ba:7c:6c:3a:a8:b5:22 root@linux-yhy.com

The key's randomart image is:

+--[ RSA 2048]----+

|+*..o .|

|*.o+ |

|o*.|

|+ .. |

|o.. S|

|.. + |

|. =|

|E+ . |

|+.o|

+-----------------+

第2步: 把客户端主机中生成的公钥文件传送至远程主机。

【ssh-copy-id 192.168.88.188】

The authenticity of host '192.168.88.20 (192.168.88.188)' can't be established.

ECDSA key fingerprint is 4f:a7:91:9e:8d:6f:b9:48:02:32:61:95:48:ed:1e:3f.

Are you sure you want to continue connecting (yes/no)? yes

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter 

out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are 

prompted now it is to install the new keys

root@192.168.88.188's password:此处输入远程服务器密码

Number of key(s) added: 1

Now try logging into the machine, with: "ssh '192.168.88.188'"

and check to make sure that only the key(s) you wanted were added.

第3步: 对服务器进行设置,使其只允许密钥验证,拒绝传统的口令验证方式。记得在修改配置文件后保存并重启sshd服务程序。

【vim /etc/ssh/sshd_config 】

 ………………省略部分输出信息………………

 74 

 75 # To disable tunneled clear text passwords, change to no here!

 76 #PasswordAuthentication yes

 77 #PermitEmptyPasswords no

 78 PasswordAuthentication no

 79 

 ………………省略部分输出信息………………

【systemctl restart sshd】

第4步: 在客户端尝试登录到服务器,此时无须输入密码也可成功登录。

【ssh 192.168.88.188】

Last login: Mon Apr 13 19:34:13 2017

5.2.4配置VNC图形界面服务

Telnet和SSH服务只能实现基于字符界面的远程控制,对于习惯于使用Xwindow的用户而言,使用字符界面就不是很习惯,那么如何远程也能使用Xwindow呢?VNC(Virtual Network Computer,虚拟网络计算机)软件即是实现该技术的绝佳选择。VNC是一款优秀的远程控制工具软件,由著名的AT&T的欧洲研究实验室开发。VNC是基于UNIX和Linux操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和Windows以及MAC中的任何远程控制软件媲美。

VNC基本上是由两部分组成: 一部分是客户端的应用程序(VNC Viewer); 另外一部分是服务器端的应用程序
(VNC Server)。VNC的服务器端应用程序在UNIX和Linux操作系统中适应性很强,图形用户界面十分友好。下面将在CentOS 7.5中安装配置VNC Server实现远程的图形化访问,其步骤如下。

前期准备: 关闭防火墙与SeLinux

为了排除防火墙的干扰,在正式学习防火墙之前,建议关闭CentOS系统的防火墙,CentOS 7的防火墙是firewalld,关闭防火墙的命令为: 

systemctl stop firewalld.service

临时关闭SELinux,命令如下: 

setenforce 0

第1步: 安装GNOME图形化桌面。
要能远程访问图形化界面,首先服务器自身要安装图形化套件,如服务器没有安装图形化套件,可以通过如下命令安装,在此以安装GNOME Desktop为例。
yum y groupinstall "GNOME Desktop": CentOS 7.x安装GNOME桌面环境
。
备注: Xfce、KDE、GNOME都是图形桌面环境,其特点是占用资源更小。资源占用情况大致为: 
GNOME>KDE>Xfce。具体情况与版本有关。一般版本越新,资源占用越大。

第2步: 安装TigerVNC Server软件。
yum y install tigervncserver tigervncservermodule: 安装VNC Server相关软件
。

备注: 在CentOS 6.x里安装的是tigervncserver tigervnc,在CentOS 5.x里面是vncserver vnc*。

第3步: 配置VNC。
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service: 复制模板文件。
cd /etc/systemd/system: 进入配置文件目录。
vim vncserver@:1.service: 打开编辑刚刚复制的新配置文件。
配置文件内容为: 

[Unit]

Description=Remote desktop service (VNC)

After=syslog.target network.target

[Service]

Type=forking

User=root

ExecStart=/usr/bin/vncserver :1 -geometry 1280x1024 -depth 16 -securitytypes=none -fp /usr/share/X11/fonts/misc

ExecStop=/usr/bin/vncserver -kill :1

[Install]

WantedBy=multi-user.target


注意: 将文件中的USER=的值修改为VNC Client连接的账号,这里设置为root; vncserver :1设定可以使用VNC服务器的账号,可以设定多个,但中间要用空格隔开。注意前面的数字“1”或是“2”,当
要从其他计算机登录VNC服务器时,就需要用IP:1这种方法,而不能直接用IP。
例如,VNC服务器IP是192.168.1.100,要想进入VNC服务器,并以yhy用户登录时,需要在
VNC Viewer中输入IP的地方输入“192.168.1.100:1,”如果是ROOT,那就是
“192.168.1.100:2”。1280x1024可以转换成
计算机支持的分辨率。注意中间的“x”不是“*”,而是小写字母“x”。depth代表色深,参数值有8、16、24、32等。

第4步: 启动VNCServer服务。
systemctl start vncserver@:1.service: 设置VNC Server开机自启动。
systemctl enable vncserver@:1.service: 启用配置文件。
第5步: 配置VNC密码。
VNC Server运行后,如果没有配置密码,客户端是无法连接的,可通过如下命令设置与修改密码。
vncserver: 设置VNC密码,密码必须为6位以上。
vncpasswd: 修改VNC密码,同样,密码需要为6位以上。
备注: 这里是为上面的ROOT远程用户配密码,所以在ROOT账户下配; 如果为别的账户配密码,就要
切到相应的账户下设置。
第6步: 测试登录。

在网上输入“VNC Viewer”关键字搜索并下载VNC Viewer,安装并打开,界面如图516所示。
输入服务器端IP:1,然后单击“确定”按钮,打开如图517所示的要求输入ROOT密码的提示框。


图516VNC Viewer连接远程主机界面




图517VNC Viewer要求输入ROOT密码提示框


输入ROOT账号的密码,单击“确定”按钮,即可登录成功,登录成功的界面如图518所示。


图518VNC Viewer登录成功界面


第7步: 排错。

(1) 检查SELinux服务并关闭,使用命令“vim /etc/selinux/config”编辑/etc/selinux/config文件,设置SELinux字段的值为
“disabled”。
(2) 关闭NetworkManager服务。

chkconfig --del NetworkManager

(3) iptables防火墙默认会阻止VNC远程桌面,所以需要在iptables允许通过。当启动VNC服务后,
可以用netstat tunlp命令查看VNC服务所使用的端口,可以发现有5801,5901,6001等。使用下面的命令开启这些端口。
使用vim命令编辑/etc/sysconfig/iptables文件,在文件最后添加如下内容。

-A RH-Firewall-l-INPUT -p tcp -m tcp -dport 5801 -j ACCEPT

-A RH-Firewall-l-INPUT -p tcp -m tcp -dport 5901 -j ACCEPT

-A RH-Firewall-l-INPUT -p tcp -m tcp -dport 6001 -j ACCEPT

重启防火墙或者直接关闭防火墙。
/etc/init.d/iptables restart: 重启防火墙。
/etc/init.d/iptables stop: 关闭防火墙。
第8步: NVC的反向连接设置。

在大多数情况下,VNC Server总处于监听状态,VNC Client主动向服务器发出请求从而建立连接。然而在一些特殊的场合,需要让VNC客户机处于监听状态,VVNC Server主动向客户机发出连接请求,此为VNC的反向连接。主要步骤如下。
vncviewer listen: 启动VNC Client,使VNC Viewer处于监听状态。

vncserver: 启动VNC Server。

vncconnect display :1 192.168.223.189 (服务器IP地址): 在VNC Server端执行vncconnect命令,发起Server到Client的请求。
第9步: 解决可能遇到的黑屏问题。

在Linux中安装配置完VNC服务端,发现多用户登录会出现黑屏的情况,具体的现象为: 客户端可以通过IP与会话号登录进入系统,但登录进去是漆黑一片,除了一个叉形的鼠标以外,伸手不见五指。
原因: 用户的VNC的启动文件权限未设置正确。
解决方法: 将黑屏用户的xstartup(一般为/用户目录/.vnc/xstartup)文件的属性修改为755(rwxrxrx)。之后杀掉所有已经启动的VNC客户端,操作步骤如下。
vncserver kill :1: 杀掉所有已经启动的VNC客户端1。
vncserver kill :2: 杀掉所有已经启动的VNC客户端2(kill与:1或:2中间有一个空格)。
/etc/init.d/vncserver restart: 重启VNC Server服务。
备注: VNC Server只能由启动它的用户来关闭,即使是ROOT用户也不能关闭其他用户开启的VNC Server,除非用kill命令暴力杀死进程。
5.3远程文件传输

scp是secure copy的简写,是用于在Linux下进行远程复制文件的命令。和它类似的命令有cp,不过cp只是在本机进行复制不能跨服务器,而且scp传输是加密的,可能会稍微影响一下速度。当
服务器硬盘变为只读时,用scp可以帮助把文件移出来。另外,scp
不占资源,系统负荷小,在这一点上,rsync就远远不及它了。虽然rsync比scp会快一点儿,但在小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。其格式为“scp [参数]本地文件远程账户@远程IP地址:远程目录”。

与第2章讲解的cp命令不同,cp命令只能在本地硬盘中进行文件复制,而scp不仅能够通过网络传送数据,而且所有的数据都将进行加密处理。例如,如果想把一些文件通过网络从一台主机传递到其他主机,这两台主机又恰巧是Linux系统,这时使用scp命令就可以轻松完成文件的传递了。scp命令中可用的参数以及作用如表52所示。


表52scp命令中可用的参数及作用



参数作用参数作用

v显示详细的连接进度r用于传送文件夹
P指定远程主机的sshd端口号6使用IPv6协议

在使用scp命令把文件从本地复制到远程主机时,首先需要以绝对路径的形式写清本地文件的存放位置。如果要传送整个文件夹内的所有数据,还需要额外添加参数r进行递归操作。然后写上要传送到的远程主机的IP地址,远程服务器便会要求进行身份验证了。当前用户名称为ROOT,而密码则为远程服务器的密码。如果想使用指定用户的身份进行验证,可使用
“用户名@主机地址”的参数格式。最后需要在远程主机的IP地址后面添加冒号,并在后面写上要传送到远程主机的哪个文件夹中。只要参数正确并且成功验证了用户身份,即可开始传送工作。由于scp命令是基于SSH协议进行文件传送的,而5.2.3节又设置好了密钥验证,因此当前在传输文件时,并不需要账户和密码。

【echo "Welcome to Linux-yhy.Com" > readme.txt】

【scp /root/readme.txt 192.168.88.20:/home】

root@192.168.88.20's password:此处输入远程服务器中ROOT管理员的密码

readme.txt 100% 26 0.0KB/s 00:00

此外,还可以使用scp命令把远程主机上的文件下载到本地主机,其命令格式为“scp [参数]远程用户@远程IP地址:远程文件本地目录”。例如,可以将远程主机的系统版本信息文件下载,这样就无须先登录远程主机,再进行文件传送了,也就省去了很多周折。

【scp 192.168.88.20:/etc/redhat-release /root】

root@192.168.88.20's password:此处输入远程服务器中ROOT管理员的密码

redhat-release 100% 52 0.1KB/s 00:00 

【cat redhat-release】

CentOS Linux release 7.5.1804 (Core)

习题
一、  操作题
1. 建立Telnet服务器,并根据以下要求配置Telnet服务器。
(1) 配置Telnet服务同时只允许两个连接。
(2) 配置Telnet服务器在2323端口监听客户机的连接。
2. 建立SSH服务器,并根据以下要求配置SSH服务器。
(1) 配置SSH服务器绑定的IP地址为192.168.16.177。
(2) 在SSH服务器启用公钥认证。
3. 建立VNC服务器,并根据以下要求配置VNC服务器。
(1) 配置VNC服务器使用GNOME图形桌面环境。
(2) 配置VNC服务每次启动会自动创建桌面号。
(3) 在VNC服务器启用远程协助功能。
二、 简答题
1. 在Linux系统中有多种方法可以配置网络参数,请列举几种。
2. 想要把本地文件/root/out.txt传送到地址为192.168.88.20的远程主机的/home目录下,且本地主机与远程主机均为Linux系统,最简便的传送方式是什么?