l5.远程连接管理Linux实践

656 阅读25分钟

“ 本文正在参加「金石计划 . 瓜分6万现金大奖」 ”

3.1 远程连接Linux系统管理

3.1.1 为什么要远程连接Linux系统

在很多机构的培训教学中,教员通常会直接在虚拟机界面或者虚拟机里的图形界面讲解知识,这也就导致了非常多的学生只熟悉如何在虚拟机界面上操作,对实际的工作场景却并不熟悉。事实上,在实际的工作场景中,虚拟机界面或物理服务器本地的窗口都很少能够接触到的,因为服务器安装完系统之后,都要拉到IDC机房托管,如果是购买了云主机,那就更接触不到服务器本地显示器了,此时只能通过远程连接的方式管理Linux系统。因此,在装好Linux系统之后,学习Linux运维的第一步应该是配置好客户端软件远程连接Linux系统进行管理。

另外,需要指出的是,学习Linux的最佳方式就是利用虚拟机来进行学习,而不是安装双系统,或者直接抛弃Windows系统改装Linux系统。通过模拟生产环境来进行学习是非常有必要的,而虚拟机环境正是上面几种方式中最接近企业真实运维工作环境的,当然,如果能有一个真实的物理机放在局域网或机房里那就更好了。

3.1.2 连接前的小知识

3.1.2.1 IP地址(服务器的位置)

互联网上的计算机都会有一个唯一的32位地址,即IP地址,这个IP地址就相当于服务器所在的位置。

我们找人时,要知道这个人的具体地址,同理,如果要访问连接服务器,那就必须通过服务器的IP地址来实现,服务器的IP地址就相当于是服务器的具体地址。

局域网(只在我们目前的环境里生效)里也有预留的IP地址,通常以192.168.0.0、172.16.开头、10.0.开头,每个局域网内的IP地址也是唯一的。

说明:

外网IP地址:就是在全世界哪里都可以访问的IP地址。

内网IP地址:就是只能在一个范围内访问的IP地址,例如,一个企业、一个教室,但也不是绝对的,这里可以就这样先简单地理解一下,后文会深入讲解网络知识。

3.1.2.2 端口的简单概念

虚拟机IP地址是10.0.0.200(默认自动获取,一般以10.0.开头),这里的10.0.0.200代表一台主机(澡堂子),但是主机(澡堂子)上可能会有很多功能和服务,一台主机上各种不同的服务功能都是通过端口来表示的,不同的客户使用不同的服务,形象的示例说明请参见表3-1。

表3-1 端口与服务形象对应表格

b3-1.png

例如,我们用于远程连接的服务端口号默认就是22,服务名称为SSH服务。

3.1.2.3 协议的简单概念

不同的服务提供了不同的端口,对应于不同的功能,且其通信方式也可能不同,这种客户端和服务器之间交流的通信方式,可以理解为协议。

一台主机上不同的服务功能都是通过端口来进行区分的。若是不同的服务端口,那么客户端和服务器之间通信时,可能会使用不同的协议。

既然我们可以通过IP地址找到服务器(机器),那么就可以通过连接不同的端口来获得不同的服务,以及使用各种不同的协议。

连接基本名词及对应功能如表3-2所示。

表3-2 连接基本名词及对应功能

b3-2.png

3.1.3 远程连接Linux的原理

3.1.3.1 SSH远程连接介绍

当前,在几乎所有的互联网企业环境中,最常用的提供Linux远程连接服务的工具就是SSH软件。SSH分为SSH客户端和SSH服务端两部分,其中,SSH服务端包含的软件程序主要有openssh和openssl。在Linux系统中,可以按如下方法查阅SSH服务端工具的安装情况:

[root@centos7 ~]# rpm -qa openssh openssl
openssh-7.4p1-21.el7.x86_64
openssl-1.0.2k-19.el7.x86_64

提示:openssh是提供SSH服务的程序,openssl是为SSH提供连接加密的程序。

3.1.3.2 SSH服务端介绍

启动Linux系统时,默认情况下,SSH服务端程序会随系统一起启动,SSH服务是一个守护进程(daemon),它在系统后台永久进行运行并时刻响应来自所有SSH客户端的连接请求。SSH服务器的进程名为sshd,负责实时监听远程SSH客户端的连接请求并进行处理,这些请求一般包括公共密钥认证、密钥交换、对称密钥加密和非安装连接等。SSH服务是Linux系统优化时需要保留开机自启动的服务之一。

3.1.3.3 SSH客户端介绍

SSH客户端最常用的工具就是Windows平台上运行的SecureCRT了,该工具的安装很简单,按照提示一步步操作即可安装完毕。然后打开并注册软件,运行就可以使用了。远程连接Linux时,除了SecureCRT客户端软件之外,还有Xshell、putty及Linux下的SSH等客户端软件。

3.1.3.4 SSH协议介绍

SSH服务端和SSH客户端之间的交流都是通过SSH协议来实现的。SSH协议是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)制定。在进行数据传输之前,SSH先通过加密技术对联机数据包进行加密处理,然后再进行数据传输,这样就可以确保传递的数据安全。

SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效地防止远程管理过程中的信息泄露,在当前的生产环境中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。

SSH协议有两个不兼容的版本,分别是SSH 1.x和SSH 2.x。

openssh同时支持SSH 1.x和SSH 2.x。用SSH 2.x的客户端程序不能连接到SSH 1.x的服务程序上,SSH 2.x比SSH 1.x更安全,默认情况下服务端通过SSH 2.x协议提供服务。

3.1.3.5 SSH客户端和SSH服务端远程连接原理示意图

图3-1为SSH客户端和SSH服务端远程连接的形象示意图,表3-3中列举了SSH服务远程连接需要设定的五个要素。

t3-1.png

图3-1 SSH通信示意图

表3-3 SSH服务远程连接需要设定的五个要素

b3-3.png

3.1.4 远程连接Linux的客户端工具介绍

在介绍远程连接Linux的工具之前,我们先来回忆一下Windows下曾经用过的远程连接服务器的工具,其中包括远程桌面mstsc、vnc等,在Windows服务器端,这些工具分别对应不同的服务进程以响应客户端的连接请求。如果读者熟悉这些工具则可以发现,这些工具远程连接后都是用图形进行管理的,而Linux系统的远程连接工具大多数也是用命令行来管理的,例如,SecureCRT。

远程连接Linux服务器的常见工具有SecureCRT、Xshell、putty等,其中最常用的是SecureCRT和Xshell。这些客户端工具在Linux服务器端对应着相同的SSH服务进程sshd,即远程连接使用的都是SSH协议,当然它们也支持其他的协议如telnet。

事实上,远程连接Linux服务器也有图形显示工具,例如,vnc工具。不过,通常只在特殊的工作场景才会因临时需要用到图形远程管理,例如,安装Oracle的常见,绝大多数企业场景都无需桌面管理,而且安装Oracle也不是必须要用图形管理,只要能将图形导出来显示就行了,实现工具有xmanger、x-win32等。

3.1.5 如何选择远程连接Linux的工具

互联网企业里通常都习惯使用命令行管理Linux,所以选择命令行管理工具是第一位的。

若Linux服务器端守护程序选择了SSH服务,则整个连接过程都会加密,因此,会比较安全。连接Linux服务器的客户端如果是Windows系统,则可以选择SecureCRT和Xshell工具,推荐使用SecureCRT,理由是该工具历史悠久、简单、用的人多。至于Linux系统,就用openssh自带的SSH客户端工具即可。如果需要用图形进行远程管理,则建议选择vnc。相关工具列表见表3-4.

表3-4 SSH服务端及客户端工具列表

b3-4.png

3.2 SSH客户端常用工具Xshell

3.2.1 Xshell工具介绍

Xshell是一款支持SSH(SSH1和SSH2)协议的终端仿真软件,常被用来运行于Windows下以用来远程登录Unix或Linux服务器主机。

Xshell软件功能强大,不仅支持SSH协议,同时还支持Telnet、RLogin、Serial和TAPI等协议,以及非常多的功能,这里就不一一介绍了,常用功能可参看下文实践部分。

与Xshell功能类似的SSH软件还有SecureCRT、putty等,Xshell、SecureCRT、putty等都仅仅是客户端软件,一般应用于Windows客户端的电脑上,因此,到底选择哪款客户端SSH工具可根据实际情况决定,对于学习来说都是可以的,这里笔者选择比较大众化的Xshell为例为读者阐述了Xshell的常用优秀功能。

3.2.2 Xshell工具安装说明

由于是在Windows下进行安装,因此操作步骤很简单,按提示一次点击“下一步”即可完成,这里就不一一叙述了。

3.2.3 配置Xshell连接Linux主机

在笔记本或客户端电脑上正确安装Xshell SSH连接工具之后,通过开始程序或快捷菜单找到Xshell并打开,会看到如图3-2所示的界面。

在如图3-2所示的界面中点击工具栏中的第一个“+”号的快捷按钮(即“新建连接”按钮),此时会进入如图3-3所示的窗口。

在该窗口中,首先选择连接的协议为SSH2(也可以选择其他协议),然后在下面的选项框中,配置Linux系统的IP地址及默认的端口号22,单击确定,此时会进入如图3-4所示的提示框。点击我们刚刚创建的连接,则会进入如图3-5所示的提示框。

t3-2.png

图3-2 Xshell界面

t3-3.png

图3-3 快速连接服务器配置端口

t3-4.png

图3-4 添加连接后的提示框

如图3-5显示的是主机密钥验证,只有在第一次连接时才会出现这个提示框,单击“接受并保存”按钮,然后进入如图3-6所示的提示框。

t3-5.png

图3-5 验证主机密钥

t3-6.png

图3-6 提示输入用户名

输入超级管理员用户名root,然后勾选左下角的“记住用户名”,然后点击“确定”按钮。如果顺利的话,应该会出现输入密码的提示窗口,如图3-7所示。输入root用户的密码,然后勾选左下角“记住密码”,最后点击“确定”按钮。登录成功后的Linux Shell命令行提示窗口如图3-8所示。

t3-7.png

图3-7 输入密码提示框

t3-8.png

图3-8 正确登录系统后的窗口及命令行

此时就可以像在VMware虚拟机里或物理机上接显示器那样管理Linux系统了,你甚至感受不到实在远程管理,因为都是文本操作,操作都非常顺畅,哪怕是操作地点距离服务器几千公里之遥。

3.2.4 通过SSH工具连接Linux主机的常见问题

入托你的操作比较规范,且是在局域网内,那么一般情况下是不会有连接问题的;如果你的操作有疏漏之处,而且是在广域网中,或者是通过拨号上网,那么有可能就会存在一些问题。下面就与大家分享一下部分常见问题的原因及解决办法。

3.2.4.1 连接超时问题

如果完成3.2.3节介绍的设置步骤依然连接不上Linux主机,那么可能会出现连接超时的提示,如图3-9所示。

t3-9.png

图3-9 连接服务器超时提示

如果遇到这个问题,则检查Linux系统和客户端电脑端的网络连接是不是通畅的,最简单的方法就是在客户端电脑(DOS界面里)上ping一下Linux主机的IP。

ping的实际命令如下:

C:\Users\Administrator>ping 10.0.0.200
​
正在 Ping 10.0.0.200 具有 32 字节的数据:
来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64
来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64
​
10.0.0.200 的 Ping 统计信息:
    数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms
#提示:这是通的状态
​
C:\Users\Administrator>ping 10.0.0.203
​
正在 Ping 10.0.0.203 具有 32 字节的数据:
来自 10.0.0.1 的回复: 无法访问目标主机。
请求超时。
请求超时。
请求超时。
​
10.0.0.203 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 1,丢失 = 3 (75% 丢失),
#提示:这是不通的状态

如果未能ping通Linux主机的IP,则可以通过如下方法进行检查。

1)确定Linux主机本身的设置是不是正确,或是否获取到了IP,并且这个IP与客户端电脑的IP是不是在同一个网络里。

2)Linux系统的防火墙是否阻挡了客户端电脑和Linux主机之间的22端口。关闭CentOS 7 Linux防火墙的方法具体如下:

[root@centos7 ~]# systemctl stop firewalld
#关闭防火墙。
​
[root@centos7 ~]# systemctl disable firewalld
#禁止开机自启动。

3.2.4.2 SSH端口问题

可以如下几个方面来查找原因。

1)sshd服务程序是否正确开启,确认的示例命令如下:

[root@centos7 ~]# ps -ef|grep sshd|grep -v grep
root       1213      1  0 16:06 ?        00:00:00 /usr/sbin/sshd -D     #若有这一行则便是服务正常
root       1887   1213  0 17:22 ?        00:00:00 sshd: root@pts/1

2)sshd服务的默认端口22是不是被更改了,确认的示例命令如下:

[root@centos7 ~]# netstat -lntup|grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1213/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      1213/sshd  
​
[root@centos7 ~]# ss -lntup|grep sshd
tcp    LISTEN     0      128       *:22                    *:*                   users:(("sshd",pid=1213,fd=3))
tcp    LISTEN     0      128    [::]:22                 [::]:*                   users:(("sshd",pid=1213,fd=4))

以上两条命令都可以。

3)是否因为开启了firewalld防火墙而导致禁止连接,确认的示例代码如下:

[root@centos7 ~]# systemctl status firewalld
 firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)  #表示非工作状态。
     Docs: man:firewalld(1)

检测是否开启了防火墙阻挡的简单方法是在客户端电脑或者在Xshell界面里执行telnet 192.168.2.217 22来检查连通性,如图3-10所示的就是通畅状态。

t3-10.png

图3-10 tenet检测Linux系统SSH服务是否通畅

4)客户端Xshell是不是配错了连接的端口或IP。

最后就是从连接的Xshell客户端设置检查,以查看配置是否正确,如图3-11所示。

t3-11.png

图3-11 Xshell客户端连接Linux配置

SSH端口问题大体上都是由上述4类情况引起的,更多原因可加入本书QQ交流群进一步探讨。

3.2.5 调整Xshell的终端显示和回滚缓冲区大小

磨刀不误砍柴工,为了更方便地学习Linux,首先得对终端进行一些调整,步骤如下:首先通过Xshell顶部菜单中的“文件”-->“属性”打开会话属性窗口,然后单击左边菜单“终端”,在终端右边的选项框里选择“Linux”,最后设置缓冲区为102400,并点击“确定”(如图3-12所示)。

t3-12.png

图3-12 会话属性-终端图示

调整终端显示和回滚缓冲区的说明如下。

  • 终端选择为Linux(有网友选择Xterm,也是可以的),目的是让Xshell里的Linux命令行用起来更舒服,如果开发的是Shell/Python程序,则更利于进行代码展示,比如会高亮显示代码等。
  • 调整回滚缓冲区的目的是,操作内容过多时,若想回看操作过的记录,则可以向上翻得更远一些。

3.2.6 调整字体及光标颜色

继续单击左边菜单中的“外观”,在右侧内容区会显示与“窗口和文本外观”相关的选项,如图3-13所示。

在如图3-13所示的界面中,修改字体大小为14,选择“使用闪烁的光标”,然后点击“确定”按钮。

t3-13.png

图3-13 调整字体光标等

3.2.7 配置记录SSH操作日志及输出

设置在Xshell中记录执行命令及屏幕输出的日志文件,可以更方便地查阅曾经操作过的配置、命令及结果输出等(这一点对于大家的学习和工作都非常有用)。

日志文件的默认格式为: %n %Y-%m-%d%t.log(日志文件名以连接名字、年、月、日、时分秒的形式记录)。

点击用户管理界面左边菜单“高级”中的“日志文件”,在右侧内容区会显示与“日志文件”相关的选项,配置内容如图3-14所示。

t3-14.png

图3-14 配置SSH记录日志图

配置SSH操作记录日志的说明具体如下。

  • 在图3-14中一定要勾选“连接时开始日志记录”,如果不勾选则不会记录。
  • 日志名词保存默认即可。
  • 如果单独配置这部分内容,则需要退出连接重新登录,上述配置才能生效。
  • 建议将日志的目录统一放在一个固定目录下,例如:d:\ssh下以方便管理。

3.2.8 配置本地机器上传下载的目录

在默认会话属性界面点击左边菜单的“文件传输”,然后就可以在右侧的目录区中设置文件的上传和下载目录,如果3-15所示。

t3-15.png

图3-15 rz、sz上传下载Windows默认路径

上传和下载的路径可以设置为同一个,但所选择的路径必须存在于系统中才行。

设置完毕后,就可以通过Xshell连接的Linux命令行经由rz上传文件到Linux系统了,通过“sz 文件名”即可下载文件到上述配置的路径里,从而实现客户端电脑和Linux主机的文件传输。

下面再来看一下有关上传、下载命令的说明。

(1)rz、sz命令的安装方法

第一种方法:安装系统时选择包含rz、sz命令的包组。

第二种方法:安装系统后,通过执行yum install lrzsz -y或yum groupinstall "Dial-up Networking Support" -y命令来安装。

(2)上传命令rz

上传内容时,执行rz命令,如果系统覆盖服务器上的同名内容,则可加参数-y,输入rz -y命令后直接回车,会打开一个上传文件的窗口,然后从这个窗口浏览器找到需要传输的文件并进行上传,在这个上传的窗口内选择的文件就是客户端电脑本地要上传到Linux的文件。

(3)下载命令sz

下载内容时,执行“sz filename”,如果希望覆盖本地的同名内容,则可输入“sz -y filename” 命令,sz -y命令后面的filename为命令行Linux主机当前目录下的文件,例如,sz oldboy.log。使用sz或"sz -y 文件名"命令从服务器上下载文件时,默认的客户端下载路径就是如图3-15所示设置的下载路径地址。

(4)使用rz、sz命令的注意事项

  • 只能上传、下载文件而不能是目录,如果是目录则需要打包成文件再传。
  • 上传的文件可以是电脑里的任意文件,下载的文件会下载到Xshell配置的对应下载路径目录中。
  • 执行rz命令回车后,在出现的窗口中不一定要勾选最下方的“以ASCII方式上传文件”,否则会遇到上传后的文件无法使用的问题,禁止勾选的选项如图3-16所示。

t3-16.png

图3-16 上传文件注意事项图

(5)其他工具

除了rz、sz等传输文件命令之外,还可以使用ftp、sftp(SSH服务)、winscp等工具来传输文件。

(6)鼠标拖动上传功能(需要rz支持)

Xshell有一个非常棒的功能,即拖动文件到Xshell窗口,即可实现文件的上传,具体来说就是把要上传的文件拖动到Xshell窗口,松开鼠标,就会实现自动上传操作,读者可以试一试。

3.2.9 实现批量部署和管理功能

实现这个功能要有一个前提,就是前面在介绍连接时所讲的,要确保所有的标签是在同一个Xshell窗口中打开的(如图3-17所示)。

t3-17.png

图3-17 多标签批量管理登录窗口

之后,在任何一个窗口中,右键点击选择最后一个选项“发送键输入到所有会话”(如图3-18所示)。

t3-18.png

图3-18 批量操作打开位置

开启批量输入模式后的样子以及操作批量管理命令的结果如图3-19所示。

t3-19.png

图3-19 批量执行命令演示图

提示:如果需要批量部署或执行任务的服务器为数十台,则可以利用Xshell的这个小功能,非常不错,简单易用,其可以替代一些大型的批量部署软件。如果是大规模服务器数量,则可以使用ansiable等批量管理工具。

3.2.10 配置Xshell标签路径

工作久了,Xshell的标签就会有很多,当重装系统或者更换客户端电脑时,这些标签就会丢失,因此需要对标签进行拷贝以实现备份,可以通过“工具”里面的“选项”指定一个新的配置目录来实现备份,如图3-20所示。

t3-20.png

图3-20 Xshell标签信息存放路径

3.2.11 配置标签模板

前面已经进行了非常多的配置,若是再新建标签服务器,那么要如何继承这些配置呢?

t3-21.png

图3-21 复制配置好的标签

方法1:对一个已经配置好的标签实施复制、粘贴操作来新建标签(如图3-21所示),这样他就继承了老标签的配置,只需要再修改相应的特殊配置即可,如IP、会话名字等。

方法2:在全部选项里配置上述各种功能设置(如图3-22所示),这样每次新添加标签时都会使用全局的默认配置。首先断开所有的Xshell连接,然后选择顶部菜单栏“文件”里面的“属性”,也就是修改默认会话属性(这里不再具体讲解了,留给读者自行使用),这里的修改在新建连接里都会直接继承生效。注意默认会话属性对已有连接配置无效。

t3-22.png

图3-22 全局调整标签配置永久生效

3.2.12 SSH远程连接故障排查

3.2.12.1 SSH远程连接故障排查案例

假设远程Linux服务器的IP地址为10.0.0.200,现在要进行连接故障排查。

首先,查看远端服务器是否正常,注意,操作命令的机器为客户端电脑DOS命令行或者Xshell界面,基本检查思路如下。

(1)利用ping命令检查(客户端执行)

具体命令为:

[C:~]$ ping 10.0.0.200     #次命令适合Linux和Windows
​
正在 Ping 10.0.0.200 具有 32 字节的数据:
来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64
来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64
来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64
来自 10.0.0.200 的回复: 字节=32 时间<1ms TTL=64
​
10.0.0.200 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

这里通过ping命令从客户端发包到服务器,看看是否有数据包返回,从而确定物理链路是否通畅,打个比喻就是想开车去玩,先确定到目的地的高速路是否修通了。

提示:也可以通过tracert -d 10.0.0.200(仅适合于Windows)或traceroute 10.0.0.200 -n(适合于Linux)命令跟踪路由情况,这两个跟踪路由的命令一般用于广域网。

如果ping不通,那就说明“高速路”断了,可能是因为以下几点原因。

1)对应网卡是否激活(很多人在安装系统时没有勾选网卡开机自启动)。

2)网卡对应的IP是否配置正确。

3)虚拟机的网卡是不是桥接模式(与本书一致)。

(2)检查firewalld等防火墙测量是否阻挡了连接(服务端执行)

具体命令为:

[root@centos7 ~]#  systemctl status firewalld

初学者在学习期间最好关掉firewalld,等日后学习了firewalld之后再开启。打个比喻就是确认是否因为天气原因(例如,大雾或下雪)高速路遇阻无法通行了。

(3)利用telnet或nmap命令检查(客户端执行)

具体命令为:

[C:~]$ telnet 10.0.0.200 22
​
​
Connecting to 10.0.0.200:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
SSH-2.0-OpenSSH_7.4

或:

[root@centos7 ~]#  nmap 10.0.0.200 -p 22    #仅适合Linux,需要安装该软件包后才能使用。
​
Starting Nmap 6.40 ( http://nmap.org ) at 2020-10-02 20:38 CST
Nmap scan report for 10.0.0.200
Host is up (0.000091s latency).
PORT   STATE SERVICE
22/tcp open  ssh
​
Nmap done: 1 IP address (1 host up) scanned in 0.48 seconds

通过该命令可以查看连接服务器端10.0.0.200的22端口是不是开通状态,因为SSH服务默认开启的是22端口,同样可以比喻为想开车出去玩,在高速路通了以后,要确认旅游景点是否开放。

(4)系统中的SSHD服务网是否正常开启,端口是否正确

具体命令为:

[root@centos7 ~]#  netstat -lntup|grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1213/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      1213/sshd     

(5)检查连接的客户端,例如Xshell连接的IP、端口、协议等是否填写正确。

3.2.12.2 SSH远程连接故障排查思路逻辑图

为了让大家能够更形象地了解SSH远程连接故障排查思路,下面特用图解来说明相应的逻辑,如图3-23所示。

t3-23.png

图3-23 SSH远程连接故障排查逻辑图

表3-5所示的内容为SSH故障排查思路小结。

表3-5 SSH故障排查思路

b3-5.png

3.3 克隆VMware下的虚拟机

3.3.1 克隆VMware下的CentOS 7虚拟机

在VMware虚拟环境中,对于完成上述操作后的Linux主机,可以做一个快照,然后当作模板机永久保留。以后再需要学习这样的机器时,可以克隆一个新的机器使用,系统安装和优化时较为简单的操作,没必要进行多次重复操作。

首先,关闭克隆的虚拟机,如图3-24所示。

t3-24.png

图3-24 关闭虚拟机的状态图

右键点击图3-24中左边菜单栏的虚拟机标签,在弹出的菜单中选择“管理”-->“克隆”如图3-25所示。

克隆的完整步骤见图3-26和图3-27.

t3-25.png

图3-25 虚拟机克隆选择界面

t3-26.png

图3-26虚拟机克隆过程拼图

t3-27.png

图3-27 点击关闭后,就可以在左边栏看到新克隆的虚拟机了

3.3.2 解决克隆的虚拟机无法上网的问题

在克隆虚拟机及使用的过程中也会遇到一些问题。比如,笔者在教学过程中,曾发现有学生通过VMware的完全克隆功能快速创建了一台版本为CentOS 6系列的Linux虚拟机,但遇到了如下问题无法解决。

创建后的症状:启动之后使用ip add发现无IP地址,只有回环地址127.0.0.1。对此,首先要考虑是不是因为MAC/IP地址及主机名都与克隆前的源主机相同(源主机采用手动方式配置的IP)。

注意:但是在CentOS 7系统克隆上,这种克隆后的虚拟机无法上网的问题就不存在了,也就是说下面所讲解的解决克隆机无法上网的方法可以无需操作了。

如果读者使用的是早期的版本系统克隆,或者仍然出现了上述不能上网的问题,那么解决办法可以参考下文。

1)编辑网卡对应的eth0的配置文件:vi /etc/sysconfig/network-scripts/ifcfg-eth0,删除配置文件中HWADDR地址及UUID所在的行,命令如下:

HWADDR=00:0c:29:08:28:9f
UUID=cee39dbb-6a10-4425-9daf-768b6e79a9c9

快速修改方法如下:

[root@centos6 ~]# sed -i '/UUID*/d' /etc/sysconfig/network-scripts/ifcfg-eth0
[root@centos6 ~]# sed -i '/HWADDR*/d' /etc/sysconfig/network-scripts/ifcfg-eth0

提示:当然也可以根据实际的HWADDR和UUID进行修改,而不是删除。请参见/etc/udev/rules.d/70-persistent-net.rules文件内容帮助。

eth0网卡文件修改后,代码如下:

[root@centos6 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.0.0.202
NETMASK=255.255.255.0
DNS2=114.114.114.114
GATEWAY=10.0.0.254
DNS1=8.8.8.8
USERCTL=no
PEERDNS=yes
IPV6INIT=no

2)清空如下文件

[root@centos6 ~]# > /etc/udev/rules.d/70-persistent-net.rules
#提示:机器名可以不改

3)重启系统,执行reboot或者在虚拟机外重启Linux。

CentOS 7克隆完,修改步骤:

[root@oldboyedu ~]# nmtui   #修改IP
[root@centos7 ~]# systemctl restart network
[root@centos7 ~]# ping www.baidu.com
^C
[root@centos7 ~]# sed -i.bak 's/UUID*/#UUID*/g' /etc/sysconfig/network-scripts/ifcfg-eth0
[root@centos7 ~]# systemctl restart network
[root@centos7 ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=38.8 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=128 time=38.8 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=3 ttl=128 time=43.4 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 38.816/40.356/43.427/2.171 ms

原因猜测:虚拟机克隆为了保护源机器和克隆机器启动网络配置地址冲突而做的保护策略,或者开发者并没有考虑到这个问题。

老男孩博文参考:blog.51cto.com/oldboy/1363…

3.4 本章重点

  • 远程连接Linux的原理及相关软件介绍。
  • Xshell的高效操作配置。
  • 远程连接Linux故障排查思路。
  • VMware克隆虚拟机方法。
  • 解决克隆虚拟机无法联网的问题。