3.1.2 远程连接Linux的原理

1.SSH远程连接介绍

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

[root@www ~]# rpm -qa openssh openssl
openssl-1.0.1e-30.el6.x86_64
openssh-5.3p1-104.el6.x86_64

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

2.SSH服务器端介绍

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

3.SSH客户端介绍

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

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协议提供服务。

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

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

图3-1 SSH通信示意图

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

6.SSH远程连接故障排查示例

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

首先,查看远端服务是否畅通,注意:操作命令的机器为客户端计算机命令行,基本检查思路如下。

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

具体命令为:

ping 10.0.0.7          ←此命令适合Linux和Windows

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

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

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

具体命令为:

telnet 10.0.0.7 22

nmap 10.0.0.7-p 22     仅适合Linux,需要安装该软件包后才能使用。

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

(3)检查iptables等防火墙策略是否阻挡了连接(服务器端执行)

具体命令为:

/etc/init.d/iptables status

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

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

为了让读者能更形象地了解SSH远程连接故障排查思路,特用图解说明,如图3-2所示。

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

表3-2为SSH故障排查思路小结。

表3-2 SSH故障排查思路