Linux 网络配置与 SSH 安全
简介
网络配置和 SSH 安全是 Linux 运维的基础。本文详细介绍了 CentOS 和 Ubuntu 两大主流发行版的网络配置方法,以及 SSH 服务的安全加固策略,涵盖密钥认证、端口修改、禁止 root 登录和 sshpass 自动化工具等内容。无论你是开发人员还是运维工程师,掌握这些知识都是管理 Linux 服务器的必备技能。
[图片占位符:Linux 网络与 SSH 安全知识体系思维导图]
一、CentOS 网络配置
1.1 安装网络工具
CentOS Minimal 安装后需要手动安装网络工具:
sudoyuminstallnet-tools1.2 配置网络
# 编辑网络配置文件vi/etc/sysconfig/network-scripts/ifcfg-ens33# 设置 IP 分配方式(dhcp 或 static)BOOTPROTO=dhcp# 或静态 IPBOOTPROTO=staticIPADDR=192.168.1.100NETMASK=255.255.255.0GATEWAY=192.168.1.1# 重启网络sudosystemctl restart network.service注意:RHEL 7 之后,所有服务管理从
service servername start统一改为systemctl start servername.service的方式。
1.3 网卡设备命名规则
自 RHEL 6/CentOS 6 开始引入了设备可预测命名规则。传统的枚举命名方式(eth0、eth1…)并不一定符合实际的硬件插槽、PCI 位置、USB 接口等信息,可能导致网络配置错误。
可预测命名规则的好处:基于固件、拓扑结构和位置信息确定接口名称,即使添加或移除网络设备,接口名称仍然保持固定。
恢复传统枚举命名(eth0):
# 1. 编辑 GRUB 配置sudovi/etc/default/grub# 在 GRUB_CMDLINE_LINUX 中添加net.ifnames=0biosdevname=0# 2. 更新内核参数sudogrub2-mkconfig-o/boot/grub2/grub.cfg# 3. 修改网卡配置sudovi/etc/sysconfig/network-scripts/ifcfg-ens33# 将 DEVICE 改为 eth0sudomv/etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0# 4. 重启sudoreboot1.4 防火墙与 SELinux
# 关闭防火墙sudosystemctl disable firewalld# 禁用 SELinuxsudovi/etc/selinux/config# 将 SELINUX=enforcing 改为 disabled1.5 更新软件源
# 备份原始源mv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup# 下载 163 源wgethttp://mirrors.163.com/.help/CentOS7-Base-163.repo-O/etc/yum.repos.d/CentOS7-Base-163.repo# 清除缓存并重建sudoyum clean allsudoyum makecache二、Ubuntu 网络配置
2.1 Ubuntu 18.04+ (Netplan)
Ubuntu 17 之后的网络配置使用 Netplan,配置文件位于/etc/netplan/。
静态 IP 配置:
network:ethernets:ens33:addresses:[192.168.1.20/24]dhcp4:falsegateway4:192.168.1.1nameservers:addresses:[192.168.1.1]optional:trueversion:2动态 IP 配置:
network:ethernets:ens33:dhcp4:trueversion:2应用配置:
sudonetplan applyUbuntu 16.04 及之前版本的网络配置文件为
/etc/network/interfaces。
2.2 安装 deb 软件
# 直接安装sudodpkg-ipackage.deb# 修复依赖关系sudoapt-getinstall-f# 使用 gdebi 工具(更好的依赖处理)sudoapt-getinstallgdebisudogdebi package.deb三、SSH 安全加固
3.1 安装与基本操作
sudoapt-getinstallopenssh-serversudoservicesshstart|stop|restart|status3.2 密钥认证配置
客户端生成密钥:
ssh-keygen-trsa# 生成密钥对ssh-copy-id-i~/.ssh/id_rsa.pub user@server# 推送公钥到服务器服务端配置(/etc/ssh/sshd_config):
# 禁用密码验证 PasswordAuthentication no # 启用密钥验证 RSAAuthentication yes PubkeyAuthentication yes # 指定公钥数据库文件 AuthorizedKeysFile .ssh/authorized_keys3.3 修改 SSH 端口
# 编辑 /etc/ssh/sshd_config Port 22 Port 31422 # 新端口# 重启服务sudoservicesshrestart# 验证端口监听netstat-an|grep"LISTEN"注意:新端口需要先在防火墙中放行。在通过新端口成功登录之前,不要删除 22 端口配置。
3.4 禁止 root 远程登录
# 编辑 /etc/ssh/sshd_config PermitRootLogin no # 重启服务 sudo service ssh restart3.5 SSH 免密执行远程命令
# 远程执行单条命令ssh-p22user@ip'command'# 使用 sshpass 自动输入密码sshpass-p'password'sshuser@ip'command'# 首次连接跳过确认ssh-oStrictHostKeyChecking=no user@ip'command'3.6 sshpass 工具详解
sshpass是一个用于非交互式 SSH 密码认证的工具,可以在脚本中自动输入密码,避免手动交互。
# 安装sudoapt-getinstallsshpass# 常用参数# -p:直接在命令行指定密码sshpass-p'your_password'sshuser@ip'command'# -f:从文件中读取密码(更安全,避免密码出现在命令历史中)echo'your_password'>~/.ssh/passwd_filechmod600~/.ssh/passwd_file sshpass-f~/.ssh/passwd_filesshuser@ip'command'# -e:从环境变量 SSHPASS 中读取密码exportSSHPASS='your_password'sshpass-esshuser@ip'command'# 结合 scp 使用sshpass-p'password'scpfile.txt user@ip:/remote/path/# 首次连接跳过主机确认sshpass-p'password'ssh-oStrictHostKeyChecking=no user@ip'command'安全提示:
-p参数会让密码出现在命令历史和进程列表中,生产环境建议使用-f或-e参数。更推荐的做法是配置 SSH 密钥认证,避免使用密码。
总结
网络配置和 SSH 安全是 Linux 服务器管理的第一道防线。关键要点:
- CentOS 网络配置:掌握 ifcfg 配置文件、网卡命名规则、防火墙和 SELinux 管理
- Ubuntu 网络配置:Netplan 是 Ubuntu 18.04+ 的网络配置方式,支持 YAML 格式配置
- SSH 安全加固:密钥认证 + 修改端口 + 禁用 root 登录是基本安全措施
- sshpass 工具:用于自动化场景,生产环境建议使用
-f或-e参数避免密码泄露
原始笔记来源:jdah/other_notes.c(Linux 运维全量内容)