Linux VPS服务器SSH端口一键修改脚本
博主使用SSH登录VPS一直习惯用复杂密码+默认22端口,然而这些天发现我的VPS的SSH登陆特别慢。使用TOP看内存占用率,发现有好几个SSH的进程在吃我内存。这几个SSH进程正在尝试登陆我的VPS,才重装没几天服务器就有30W条SSH爆破记录。可怕~赶紧改端口
root@Korea:~# lastb | wc -l
301495
使用方法
wget https://yangwenqing.com/files/Source/sshport.sh
bash sshport.sh
输入一个SSH端口确认。如开启了防火墙还需要另外放行SSH端口
iptables
如果防火墙使用的是iptables,SSH端口为2333
iptables -I INPUT -p tcp --dport 2333 -j ACCEPT
service iptables save
systemctl restart iptables.service
firewall
如果防火墙使用的是firewall,SSH端口为2333
firewall-cmd --zone=public --add-port=2333/tcp --permanent
firewall-cmd --reload
注意:
如果VPS使用的是 CentOS 7 且没有关闭SELinux,需要多操作一步,如关闭SELinux可忽略这步。
# 查看 SELinux 开放给 SSH 的端口
semanage port -l|grep ssh
# SELinux 开放 2333 端口给 SSH
semanage port -a -t ssh_port_t -p tcp 2333
# 如提示 semanage command not found 的报错可以使用以下命令解决,之后再操作
yum provides /usr/sbin/semanage 或者 yum whatprovides /usr/sbin/semanage
yum -y install policycoreutils-python
重启SSH
重启ssh服务就可以使用新端口SSH登录了,不过对于更安全的登录方式还是用密钥
# CentOS系统
service sshd restart
# Debian/Ubuntu系统
service ssh restart
脚本预览
系统要求:支持Debian、Ubuntu、CentOS系统。
# Use default SSH port 22. If you use another SSH port on your server
if [ -e "/etc/ssh/sshd_config" ];then
[ -z "`grep ^Port /etc/ssh/sshd_config`" ] && ssh_port=22 || ssh_port=`grep ^Port /etc/ssh/sshd_config | awk '{print $2}'`
while :; do echo
read -p "Please input SSH port(Default: $ssh_port): " SSH_PORT
[ -z "$SSH_PORT" ] && SSH_PORT=$ssh_port
if [ $SSH_PORT -eq 22 >/dev/null 2>&1 -o $SSH_PORT -gt 1024 >/dev/null 2>&1 -a $SSH_PORT -lt 65535 >/dev/null 2>&1 ];then
break
else
echo "${CWARNING}input error! Input range: 22,1025~65534${CEND}"
fi
done
if [ -z "`grep ^Port /etc/ssh/sshd_config`" -a "$SSH_PORT" != '22' ];then
sed -i "s@^#Port.*@&\nPort $SSH_PORT@" /etc/ssh/sshd_config
elif [ -n "`grep ^Port /etc/ssh/sshd_config`" ];then
sed -i "s@^Port.*@Port $SSH_PORT@" /etc/ssh/sshd_config
fi
fi