centos7设置sshd端口,firewall,selinux设置

以前服务器上用的是ubuntu系统,修改ssh端口的时候很简单,直接在配置文件修改就好了,但是在centos7上修改的时候发现修改端口之后sshd服务不能启动了,如果设置两个端口22和1122的话只能监听到22端口,最后到处查找,最后找到了解决办法:

流程如下

1、修改sshd配置文件
2、设置防火墙firewall,允许新添加的端口被监听
3、设置selinux,在selinux添加要添加的端口
4、重启sshd服务

详细步骤

系统环境:centos7

step1——修改配置文件

在centos7中,sshd的配置文件路径:/etc/ssh/sshd_config
打开文件:sudo vim /etc/ssh/sshd_config,修改配置文件需要使用root权限
假设我们要设置1122为sshd端口
在文件中添加如下内容:

Port 1122

然后保存文件,如果现在重启sshd服务,就会发现启动失败,原因就是firewall和semanage都没有配置

step2——设置firewall

设置防火墙的命令如下:
添加想要修改的端口:
firewall-cmd --zone=public --add-port=1122/tcp --permanent 后面的permanent参数是保存配置,如果没有这个参数,重启之后配置就无效了
重启防火墙
firewall-cmd --reload
查看添加端口是否成功,如果添加成功就显示yes,否则就显示no
firewall-cmd --zone=public --query-port=1122/tcp
这样防火墙就设置好了,进行下一步

step3——设置selinux

selinux是一种安全保护机制,很多帖子在这一步的时候建议关闭selinux,如果是在测试服务器上,这样的话比较方便,但是如果在生产服务器上,这样的做法是不可取的
查看selinux允许的ssh端口
semanage port -l | grep ssh
添加1122端口到selinux
semanage port -a -t ssh_port_t -p tcp 1122
查看是否添加成功
semanage port -l | grep ssh
到这一步,所有需要设置的东西都完成了,重启服务就好了

setp4——重启服务

现在就可以重启服务了,
命令:systemctl restart sshd.service

done,现在就完成了配置

### 如何在 CentOS 7 中启动 SSHD 服务 在 CentOS 7 上,`sshd` 是通过 `systemd` 来管理的服务。如果发现 `sshd` 服务无法随系统启动而自动运行,则可能是由于配置文件设置不正确或其他原因引起的。 以下是关于如何确保 `sshd` 正常工作并实现开机自启的具体说明: #### 检查 `sshd` 的状态 可以通过以下命令来检查当前 `sshd` 服务的状态: ```bash sudo systemctl status sshd ``` 这一步可以帮助确认服务是否正在运行以及是否存在错误信息[^3]。 #### 启动 `sshd` 服务 如果服务未处于活动状态,可以使用以下命令手动启动它: ```bash sudo systemctl start sshd ``` #### 设置开机自启 为了使 `sshd` 能够随着系统的启动而自动运行,需要启用其开机自启功能: ```bash sudo systemctl enable sshd ``` 此命令会在 `/etc/systemd/system/multi-user.target.wants/` 下创建指向 `sshd.service` 文件的软链接,从而让 systemd 在每次引导时加载该服务[^1]。 #### 验证配置文件无误 有时即使执行了上述操作仍可能遇到问题,此时应验证 `/etc/ssh/sshd_config` 是否存在语法错误或者不当配置项。可利用内置工具测试配置的有效性: ```bash sudo sshd -t ``` 如果有任何警告或错误提示,请按照指示调整相应参数后再重新尝试启动服务[^4]。 #### 常见排查步骤 当常规手段未能解决问题时,还可以考虑以下几个方面进一步诊断: - **SELinux 影响**: 如果 SELinux 处于 enforcing 模式下可能会阻止某些网络相关进程正常运作;临时将其切换至 permissive 可帮助判断是否为此类因素所致。 ```bash setenforce 0 ``` - **防火墙规则冲突**: 确认是否有 iptables 或 firewalld 规则阻挡了端口访问权限。 ```bash sudo firewall-cmd --add-service=ssh --permanent && sudo firewall-cmd --reload ``` --- ### 提供一段示例代码用于调试环境变量缺失的情况 对于一些特殊场景比如 Docker 容器内部部署时缺少必要的初始化脚本情况下的处理方式如下所示: ```bash #!/bin/bash # 手动初始化sshd服务 /usr/bin/ssh-keygen -A exec /usr/sbin/sshd -D -e ``` 保存以上内容到名为 `start_ssh.sh` 的脚本当中赋予可执行权能之后即可作为入口指令调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值