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

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

1.连接超时问题

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

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

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

如果遇到这个问题,请检查Linux系统和客户端计算机端的网络连接是不是通畅的,最简单的方法就是在客户端计算机上ping一下Linux主机的IP。

ping的实际命令如下:

C:\Users\oldboy>ping 10.0.0.7正在Ping 10.0.0.7 具有 32 字节的数据:来自 10.0.0.100 的回复: 无法访问目标主机。来自 10.0.0.100 的回复: 无法访问目标主机。提示:这是不通的状态
C:\Users\oldboy>ping 10.0.0.7正在Ping 10.0.0.7 具有 32 字节的数据:来自 10.0.0.7 的回复: 字节=32 时间<1ms TTL=64来自 10.0.0.7 的回复: 字节=32 时间<1ms TTL=64提示:这是通的状态

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

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

2)客户端计算机和Linux主机之间的22端口是不是被Linux系统的防火墙给阻挡了。关闭Linux防火墙的方法为:

[root@www ~]# /etc/init.d/iptables stop               <==最好连续执行两遍

2.SSH端口问题

如果出现的是远程系统拒绝连接的提示(如图3-9所示),则要从SSH端口查找原因。

图3-9 由于端口问题导致的连接失败图

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

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

[root@www ~]# ps -ef|grep sshd|grep -v grep
root   364   1  0 Oct06      00:00:00 /usr/sbin/sshd <==有这一行表示服务正常

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

[root@www ~]# netstat -lntup|grep sshd
tcp    0    0 0.0.0.0:22      0.0.0.0:*          LISTEN      364/sshd
tcp    0    0 :::22           :::*               LISTEN      364/sshd提示:22为端口,如果被改就是其他数字了。

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

[root@www ~]# /etc/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@www ~]# /etc/init.d/iptables stop

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

如果你熟悉telnet命令,也可以在客户端计算机上执行telnet 10.0.0.7 22来检查连通性。SSH端口问题大体上都是由上述4类情况引起的,更多原因可以到网上搜索,或者加入本书前言提供的官方QQ群进行交流。