方法一:手动修改

ssh服务的默认端口是22,一般的恶意用户也往往扫描或尝试连接22端口。
所以第一步就是修改这个默认端口,编辑 sshd_config 如下

vim /etc/ssh/sshd_config

找到 #Port 22 修改为如下
Port 22
Port 1031

然后将22修改为其它没有被占用的端口,如1031。防止与用户进程端口冲突。
然后重启sshd即可

重启:systemctl restart sshd.service
查看:systemctl status sshd.service
启动:systemctl start sshd.service
自启:systemctl enable sshd.service

或则

service sshd restart

或则
/etc/init.d/sshd restart(CentOS)或 /etc/init.d/ssh restart(Debian / Ubuntu)
现在请使用ssh工具连接1031端口,来测试是否成功。
使用1031端口连接成功后,再次编辑vim /etc/ssh/sshd_config的设置,将里边的Port 22删除,重启sshd服务即可。

提示:限制远程登录的 IP,编辑/etc/hosts.deny/etc/hosts.allow两个文件来限制 IP


方式二:shell脚本修改

要通过Shell脚本修改Linux SSH远程端口,可以使用以下脚本:

bash <(curl -s -L https://img.cloudduo.cn/sh/sshd_config.sh)

脚本示例

#!/bin/bash

# 设置新的SSH端口号
NEW_PORT="15522"

# 备份原始配置文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

# 更改SSH端口号
sed -i "s/#Port 22/Port $NEW_PORT/" /etc/ssh/sshd_config

# 重新启动SSH服务以应用更改
systemctl restart sshd

# 如果ufw防火墙正在运行,请添加一个新的规则
if [ $(systemctl is-active ufw) == "active" ]; then
    ufw allow $NEW_PORT/tcp
fi

echo "SSH端口已更改为$NEW_PORT,原始配置文件已备份为/etc/ssh/sshd_config.bak。"

如果端口不是默认的22,而是2222想修改为22的话,参考以下脚本

NEW_PORT="22"

# 备份原始配置文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

# 更改SSH端口号
sed -i "s/Port 2222/Port $NEW_PORT/" /etc/ssh/sshd_config

# 重新启动SSH服务以应用更改
systemctl restart sshd

# 如果ufw防火墙正在运行,请添加一个新的规则
if [ $(systemctl is-active ufw) == "active" ]; then
    ufw allow $NEW_PORT/tcp
fi

echo "SSH端口已更改为$NEW_PORT,原始配置文件已备份为/etc/ssh/sshd_config.bak。"

将上述代码保存为一个可执行的脚本文件(例如,change_ssh_port.sh),并使用管理员权限运行此脚本。然后,您将能够使用新的SSH端口连接到您的服务器。请记得在连接时指定正确的端口号。例如,使用以下命令连接到端口2222:


firewall端口转发实现,需要安全组不开放22端口

systemctl enable firewalld.service
systemctl start firewalld

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

firewall-cmd --add-masquerade --permanent 

firewall-cmd --permanent --add-port=1-65535/tcp
firewall-cmd --permanent --add-port=1-65535/udp

firewall-cmd --reload
firewall-cmd --list-all

firewall-cmd --permanent --add-forward-port=port=22022:proto=tcp:toport=22