以CentOS 7.7为例介绍如何修改Linux系统默认远程端口。
-
远程连接并登录到Linux实例。
具体操作,请参见通过密码或密钥认证登录Linux实例。
-
运行以下命令备份sshd服务配置文件。
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
-
修改sshd服务的端口号。运行以下命令重启sshd服务。重启sshd服务后您可以通过1022端口SSH登录到Linux实例。
-
运行以下命令编辑sshd_config配置文件。
vim /etc/ssh/sshd_config
-
在键盘上按
i
键,进入编辑状态。 -
添加新的远程服务端口。
本节以1022端口为例。在
Port 22
下输入Port 1022
。 -
在键盘上按
Esc
键,输入:wq后保存并退出编辑状态。
-
-
-
CentOS 7及以上版本、Alibaba Cloud Linux 2:
systemctl restart sshd
-
注意:
在安装官方版 CentOS 7 情况下,如果更改默认的 22 远程端口,然后打算用
systemctl restart sshd
命令使端口更改生效时,将会得到一个错误提示:Job for sshd.service failed because the control process exited with error code. See “systemctl status sshd.service” and “journalctl -xe” for details.
而且如果此时重启,甚至连 ssh 服务都无法正常运行。
原因
报错原因其实是 SELinux(Security-Enhanced Linux) 所致。 SELinux 中文名为安全增强型 Linux, 是 Linux 内核的一个安全模块,提供了访问控制安全策略机制,SELinux 默认情况下限制了 ssh 的监听端口。
既然知道了原因,解决方法也简单:
-
直接关闭 SELinux 功能;
解决
关闭 SELinux
在关闭 SELinux 前,可以用命令
getenforce
查看当前的状态,一般默认是Enforcing
,即强制模式(违法 SELinux 规则的行为将被组织并记录到日志中)。此外还有另一种状态Permissive
,即允许模式,在这个模式下违法策略的行为仅做记录。所以如果只做临时使用,可以简单的切换到
Permissive
模式:# 切换到 Permissive 允许模式,1 为强制模式;
setenforce 0
这个方法的优点在于无需重启便可生效,但缺点也同样明显,一旦重启即失效。所以如果想长期生效,需换一种操作,即直接关闭 SELinux 服务:
# 打开文件
vi /etc/selinux/config
# 找到这一行:SELINUX=enforcing,修改为
SELINUX=disabled
修改完成后,保存重启即可。
-
-
配置TCP协议1022端口
firewall-cmd --zone=public --add-port=1022/tcp --permanent
firewall-cmd --reload