Centos7网络配置及SSH自定义端口
本文介绍了Centos7中网络的配置和SSH自定义端口的设置方法,核心命令:nmcli
, nmtui
介绍
Centos7 中网络配置
nmcli
命令与nmtui
命令介绍
nmcli命令
在CentOS / RHEL 7中网络管理命令行工具,叫nmcli(command-line tool for controlling NetworkManager)。经常使用ifconfig的用户应该在CentOS 7中避免使用ifconfig,如果需要使用ifconfig命令,可以参考:如下命令进行安装。
1 | # yum search ifconfig |
常用的几个命令及用法:
命令 | 作用 |
---|---|
nmcli dev status |
显示所有的网卡信息 |
nmcli con show |
显示所有的连接信息 |
nmcli con up <ID> |
激活网口,启动一个连接 |
nmcli con down <ID> |
关闭网口连接,如果autoconnect 设置成yes 的话,重启后会自动连接 |
nmcli dev dis <DEV> |
关闭这个网卡设备,就算有autoconnect也不会重启 |
nmcli net off |
关闭所有受NetworkManager管理的网卡 |
nmcli con add ... |
添加一个新的连接 |
nmcli con mod <ID> |
修改指定ID的连接 |
nmcli con del <ID> |
删除指定ID的连接 |
nmtui命令
NetworkManager 文本用户界面(TUI)工具 nmtui 可提供一个文本界面配置由 NetworkManager 控制的网络。如果提示
not found
命令的话,可以yum install -y NetworkManager-tui
进行安装。
输入这个命令后,会显示如下页面:
这里有一个操作细节:
- 键盘的
→
,←
,↑
,↓
来控制方向; - 空格用来选择/选中;
- 最后要使用
service network restart
来使保存生效
编辑页面:
下面是配置一个固定IP的方式方法,注意红色线框部分需要勾选。代表:1. 自启动;2. 对所有用户有效;
网络配置
按照nmtui
命令进行配置,Edit
之后,选择Ok
保存,重启network
服务。
配置完成之后,查看配置信息:
看看配置文件:
1 | vi /etc/sysconfig/network-script/ifcfg-eth0 |
内容如下:
1 | TYPE=Ethernet |
配置完成。
Centos7的镜像及源地址
官方镜像地址:
Centos 7源
第一步:备份你的原镜像文件,以免出错后可以恢复。
1
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
第二步:下载新的CentOS-Base.repo 到/etc/yum.repos.d/
1
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者使用
curl
命令1
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
第三步:运行yum makecache生成缓存
1
2yum clean all
yum makecache参考资料:阿里云对应各个Linux的源Repo
SSH自定义端口的方法
与Ubuntu不一样,Centos的配置可能复杂一些,需要增加SELinux
相应的配置,见下文:
SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Control,强制访问控制系统)的一个实现,目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)。强制访问控制系统的用途在于增强系统抵御 0-Day 攻击(利用尚未公开的漏洞实现的攻击行为)的能力,所以它不是网络防火墙或 ACL 的替代品。
查看是否已安装SSH软件包(可跳过)
1
#rpm -qa|grep ssh
检查服务是否开启
1
systemctl status sshd.service
检查进程运行状态(可跳过)
1
ps -ef |grep sshd
检查程序运行端口(可跳过)
1
修改sshd配置文件
1
# vi /etc/ssh/sshd_config
取消
#Port 22
前面的#
号,另起一行新增Port 27300
(自定义端口),ESC
+:wq
保存退出。重启SSH服务
1
systemctl restart sshd.service
防火墙相关,默认情况下,防火墙会开启。
查看防火墙开启的状态
1
2
3
4
5# firewall-cmd --state
running # 说明是开启的
# firewall-cmd --state
not running # 说明是被禁用了,可以使用 systemctl start firewalld 来开启开放防火墙端口: 添加端口
1
firewall-cmd --zone=public --add-port=27300/tcp --permanent
重新加载
1
firewall-cmd --reload
重启服务
1
systemctl restart firewalld.service
查看端口
1
firewall-cmd --zone=public --list-all
修改SELinux端口:
检查SELinux是否启用
1
2
3
4# sestatus -v |grep SELinux
SELinux status: enabled #表示启用
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux检查semanage是否安装
1
# rpm -qa |grep policycoreutils-python
多数情况:
若未安装,请先安装工具包
1
2查看当前selinux允许的端口
1
2# semanage port -l |grep ssh
ssh_port_t tcp 22添加新端口
1
# semanage port -a -t ssh_port_t -p tcp 27300
注意:无法使用如下命令,去删除默认的SELinux配置端口
22
1
semanage port -d -t ssh_port_t -p tcp 22
会收到如下的提示:
1
ValueError: Port tcp/22 is defined in policy, cannot be deleted
这里不用去纠结,不能删除的主要原因是SELinux中的默认Policy无法删除!!!
只用删除firewall中的配置,并且保证firewall中没有放行22端口,SSH配置文件中没有Port 22
,就行了。检查是否添加成功
1
2# semanage port -l |grep ssh
ssh_port_t tcp 27300, 22 # 说明添加成功了重启SSH服务
1