共计 2914 个字符,预计需要花费 8 分钟才能阅读完成。
为什么要远程连接 Linux 系统??
在实际的工作场景中,虚拟机界面或物理服务器本地的窗口都是很少能够接触到的,因为服务器装完系统后,都要拉到 IDC 机房托管,如果是 购买了云主机,更碰不到服务器本地显示器了,此时,只能通过远程连接的方式管理 Linux 系统。因此,在装好 linux 系统后,学习 Linux 运维的第一步应该是配置好客户端软件远程(通过 ssh 软件进行连接)连接 Linux 系统进行管理
telnet 连接服务器是明文的,非加密的; 默认为 23 端口
SSH 连接服务器是 加密 的连接; 默认为 22 端口
ssh 连接示意
- 服务器端 ===> 通过 ssh 协议提供 ===> 守护进程 sshd 监听 22 端口(不断的监听是否有人需要服务)
- 客户端(客户):ssh 协议,ip 地址,端口号(需要什么服务),用户名,密码
如何查看 Linux 系统的 IP 地址??
如图所示,我的 Linux 系统 IP 为 192.168.179.133。
可以通过这两个命令来查看 IP 地址
ip 地址/24: 代表子网掩码 255.255.255.0
lo:回环网卡:用于检测设备自测
eth0: 你的第一块网卡
eth1: 你的第二块网卡
ifup 网卡名与 ifconfig 网络名 up 的区别
假如你发现你的虚拟机没有 IP 地址的话,那么也许你的网卡设备处于关闭状态
方法一:ifup + 网卡名(ethx)可以开启设备
方法二:ifconfig + 网卡名(ethx)+ up 也可以开启设备
讨论
既然这两个命令都能开启成功,那么它们到底有没有区别呢?请跟随我来做个实验。
- 第一步:我们删掉 eth1 网卡的配置文件
/etc/sysconfig/network-scripts/: 这个路径是网卡配置文件的路径,作为运维人员我们是必须熟记得
- 第二步,我们关闭 eth1 这个网卡设备
- 第三步,我们尝试开启这个设备
继续讨论
为什么我们的试验结果是这样的呢?当我删除了 eth1 这个网卡的配置文件,ifup 这个命令就失灵了?
- 这是因为,ifup/ifdown 这个命令控制的实际上并不是物理网卡的开启和关闭,而实际上他控制的仅仅是网卡的配置文件而已,它是通过网卡配置文件间接的操作网卡设备。
- 而ifconfig xxxx up/down:则是控制物理网卡设备的开启和关闭,因此并不受配置文件的干扰。
CRT 远程连接的基本原理
- 我们在前几节中提到过,sshd 这个服务,实际上是服务器的一个守护进程。
- 正是因为存在这个守护进程,因此服务器的 22 端口才会持续不断的被监听(监视)
- 当 CRT 通过 ssh 协议访问服务器的 22 端口的时候,服务器的 sshd 服务才会马上回应这个访问,因此才能进行远程连接
- 故,当服务器不存在 sshd(把进程 kill 掉)这个服务时,xshell 是无法通过 ssh 协议进行远程访问的。
当我远程用 CRT 执行命令 kill 1486 进程 后,只剩下当前 CRT 连接 Linux 的 sshd 进程 (Pid=19130)。即 我 若想在 CRT 再开一个会话连接 Linux,是绝对连不上的。
如果服务器端 sshd 服务被未运行,那么所有通过 ssh 协议的访问都将失败(包含 xshell,CRT)
当sshd 这个服务监听的不再是 22 端口时(通过配置文件可以改),CRT 必须切换到它监听的端口进行访问才能正确连接。
总结:
ifconfig + 网卡名:可以查看开启状态的网卡的 IP 地址(看不到关闭状态的网卡设备)
ip a:可以查看所有网卡的 IP 地址(还能看到关闭状态的网卡)
ip link:可以查看所有网卡的物理状态
ifup/ifdown + 网卡名:通过网卡配置文件来开启和关闭网卡设备
ifconfig 网卡名 up/down:直接关闭和开启网卡设备。
通过kill + Pid 号 或者 pkill + 服务名称 来杀掉进程
sshd 服务的配置文件路径:/etc/ssh/sshd_config
网卡的配置文件路径:/etc/sysconfig/network-scripts/ifcfg- 网卡名
netstat -antup 或 ps -ef : 可以用来查看当前服务器开启的所有服务
故障排查(通过 ssh 工具无法连接 Linux 主机)
1、两个机器之间物理网络是否通畅(网线网卡,IP 是否正确)
ping 192.168.xx.xx ====> 在当前的 CRT 或 xshell 下 ping Linux 系统,看物理网络是否通畅
2、防火墙或 selinux 是否处于开启状态
SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,这个功能让系统管理员又爱又恨,这里我们还是把它关闭了吧,至于安全问题,后面通过其他手段来解决,这也是大多数生产环境的做法,如果非要开启也是可以的。关闭方式如下:
命令说明
- setenforce:用于命令行管理 SELinux 的级别,后面的数字表示设置对应的级别
- getenforce:查看 SElinux 当前的级别状态
提示:修改配置 SElinux 后,要想使生效,必须要重启系统。因此,可配合使用 s etenforce 0 这个临时关闭的命令 ,这样 在重启前后都可以使得 SElinux 关闭生效了,也就是说无需立刻重启服务器了,在生产环境下 Linux 机器是不能随意重启。
3、查看服务器的服务进程是否处于开启状态(sshd)
- netstat -antup 或 ps -ef : 可以用来查看当前服务器开启的所有服务
4、查看服务器的 ssh 端口是否改变
- sshd 服务的配置文件路径:/etc/ssh/sshd_config
下面关于 SSH 相关的文章您也可能喜欢,不妨参考下:
Ubuntu 下配置 SSH 服务全过程及问题解决 http://www.linuxidc.com/Linux/2011-09/42775.htm
Ubuntu 14.04 下安装 Samba 及 SSH 服务端的方法 http://www.linuxidc.com/Linux/2015-01/111971.htm
集群环境 SSH 免密码登录设置 http://www.linuxidc.com/Linux/2017-03/141296.htm
提高 Ubuntu 的 SSH 登陆认证速度的办法 http://www.linuxidc.com/Linux/2014-09/106810.htm
使用 SSH 公钥密钥自动登陆 Linux 服务器 http://www.linuxidc.com/Linux/2017-02/140642.htm
开启 SSH 服务让 Android 手机远程访问 Ubuntu 14.04 http://www.linuxidc.com/Linux/2014-09/106809.htm
SSH 非交互式密码授权远程执行脚本 http://www.linuxidc.com/Linux/2017-04/143180.htm
在 Linux 中为非 SSH 用户配置 SFTP 环境 http://www.linuxidc.com/Linux/2014-08/105865.htm
Linux 上 SSH 服务的配置和管理 http://www.linuxidc.com/Linux/2014-06/103627.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143738.htm