首页 > 代码库 > SSH 远程连接原理及故障排错详解
SSH 远程连接原理及故障排错详解
1、SSH 远程连接介绍
最常用的 Linux 提供远程连接服务的工具就是 SSH 软件,SSH 分为 SSH 客户端和 SSH 服务端两部分。其中,SSH服务端包含的软件程序主要有 openssl 和 openssh,在 Linux 系统中可以按如下方法查询 SSH 服务端工具的安装情况。
# rpm -qa openssl openssh
其中,openssh 是提供 SSH 服务的程序,openssl 是为 SSH 提供连接加密的程序。
2、SSH 服务端介绍
启动 Linux 系统时,默认情况下,SSH 服务端程序就会随系统一起启动,SSH服务是一个守护进程(demon),它在系统后台永久运行并时刻响应来自所有 SSH 客户端的连接请求。SSH 服务端的进程名为 sshd,负责实时监听远程 SSH 客户端的连接请求并进行处理,这些请求一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。SSH 服务是系统优化时需要保留开机自启动的服务之一。
3、SSH 客户端介绍
SSH 客户端最常用的工具就是 Windows 平台的 SecureCRT 了,该工具安装很简单,按提示一步步操作即可,然后打开注册软件,运行就可以使用了,除 SecureCRT 软件之外,还有 xshell、putty 等常用软件以及 Linux 下的 ssh 客户端。
4、SSH 是专门为远程登录会话和其他网络服务提供的安全协议,端口号 22
5、SSH 有两个不兼容的版本:SSHv1 SSHv2,如同 windows 的 win7 与 xp
6、telnet 协议,端口号 23
========================================================
故障解决思路:
1、先 ping ip地址 -t:检查物理链路是否通
2、telnet ip地址 端口:检查服务是否通;
如果不通,则检查:
a)服务器防火墙;
b)ssh 服务是否开启;
c)客户端和服务端是不是在一个网段
关闭 Linux 防火墙的方法为:# /etc/init.d/iptables stop ---> 最好连续执行两遍
# /etc/init.d/iptables stop 等同于 # service iptables stop
===========================================================
更改 SSH 服务端远程登录的配置
windows 服务器的默认远程管理端口是 3389,管理员是administrator,普通用户是 guest。Linux 的管理用户是 root,远程管理端口是 22,普通用户默认有很多
ssh服务,它服务的启动文件是sshd。
在Linux里,我们怎么控制一个服务呢,控制一个软件的运行呢?通过更改它的配置
那 ssh 这个服务,它对应的一个配置文件是 cd /etc/ssh/sshd_config
修改配置文件之前先备份 # cp /etc/ssh/sshd_config /etc/ssh/sshd_config.oldboy.20160903
# vim sshd_config
:set nu ---> 输入 行号gg --->就跳到指定的行号 eg:98gg
配置文件修改如下:
13行 Port 52113 --->范围是:0~65535
122行 UseDNS no --->取消注释,改成 no。
这个是你访问百度网站,它给i解析成IP地址,这个解析很慢,我们自己连接都是IP连接,所以我们不需要解析,这样连接的就比较快。
42行 PermitRootLogin no --->我们不允许root通过ssh连接。
本地切换角色,用树切没问题,但不允许远程连,禁止管理员远程连接。
15行 ListenAddress 192.168.186.134 --->把这个监听的IP地址改成你服务器的内网的IP地址,
也就是说你将来的服务器可能会有eth0网卡,这个网卡是外面所有的人都能访问到的,它能够勾到你,就有可能连到你ssh;你有可能机器有两块网卡,还有一块eth1,这是内网卡,所以你要限定,只有访问你内网卡,这个ssh服务才会去响应这个请求,你访问外网,根本连不上我ssh服务
80行 GSSAPIAuthentication no ---> 我们将来远程连接的时候,特别是一台机器管理一堆机器时,它的ssh连接会比较慢,我们解决两台机器连接比较慢的问题,要把这个参数调成no
Linux 它所有的配置文件基本都是放在内存里,所以你现在改的配置文件仅仅是改磁盘上的,这个文件还没生效,所有通过重启这个服务,让它把配置读到内存里,然后才能生效,所以重启服务:
# /etc/init.d/sshd restart 或
# /etc/init.d/sshd reload ----> reload 是一个平滑重启的模式
SSH 远程连接原理及故障排错详解