服务器开启仅限 SSH 登录
你好,我是悦创。
阿里云安全性还是比较低的,天天服务器被搞挖矿。我来一次性根治一下:

1. 目标
- 通过 密钥对 登录 SSH。
- 禁用密码登录。
- 配置 fail2ban 防止暴力破解。
- 配置 SSH 服务 仅允许特定 IP 或网络访问。
2. 🔑 生成 SSH 密钥对(在本地计算机)
打开本地终端(如果你已经有密钥,可以跳过此步骤)
在本地终端(Mac/Linux)执行命令生成一个 SSH 密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"系统会提示你选择保存位置,一般默认保存到
~/.ssh/id_rsa,直接按回车。系统会提示你设置 密码,可以选择设置或直接按回车跳过。
3. 💻 将公钥上传到服务器
查看生成的公钥,执行以下命令:
cat ~/.ssh/id_rsa.pub复制该公钥内容。
SSH 登录到你的服务器:
ssh root@your_server_ip在服务器上创建
.ssh目录:mkdir -p ~/.ssh chmod 700 ~/.ssh将公钥粘贴到
authorized_keys文件:echo "your_copied_public_key" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
4. 🔒 禁用密码登录
编辑 SSH 配置文件:
vim /etc/ssh/sshd_config修改或确保以下配置项:
# 禁止 root 登录 PermitRootLogin no # 我使用的是 root 账户登录,所以不能单纯的直接禁止,需要使用如下修改: PermitRootLogin prohibit-password # 👉 表示 允许 root 账户用密钥登录,但禁止使用密码登录 # 禁用密码登录,确保使用密钥登录 PasswordAuthentication no # 👉 禁止所有账号使用密码登录(只允许密钥) # 启用公钥认证 PubkeyAuthentication yes保存并退出:按
Esc键,输入:wq。重启 SSH 服务:
systemctl restart sshd
5. 🔐 设置 Fail2ban 防止暴力破解
安装 Fail2ban(如果尚未安装):
sudo apt-get install fail2ban -y # Debian/Ubuntu 系统 sudo yum install fail2ban -y # CentOS/RHEL 系统启用 Fail2ban:
systemctl enable --now fail2ban配置 Fail2ban:编辑 Fail2ban 配置文件
jail.local:vim /etc/fail2ban/jail.local添加或修改以下内容:
[sshd] enabled = true port = ssh logpath = /var/log/auth.log # 路径可能因系统不同而不同 maxretry = 3 bantime = 600 # 10 分钟封禁时间 findtime = 600 # 10 分钟内 3 次失败尝试重新启动 Fail2ban 服务:
systemctl restart fail2ban检查 Fail2ban 状态:
fail2ban-client status sshd
6. 🌍 只允许特定 IP 登录(可选)
如果你希望仅允许来自某些特定 IP 地址的 SSH 登录,可以进一步设置防火墙或编辑 sshd_config 文件。
在
sshd_config中仅允许某些 IP 访问:打开配置文件:
vim /etc/ssh/sshd_config添加如下配置(允许指定 IP 登录,其他都禁止):
# 仅允许这些 IP 登录 AllowUsers your_user@your_ip_address # 允许多个 IP AllowUsers root@192.168.1.100 root@10.0.0.200 # 替换为你实际允许访问的 IP 地址; # 如果是其他用户,也要写成:username@ip_address; # ⚠️ 注意:不支持 IP 段,只能逐个列出; AllowUsers root@127.0.0.1 root@192.168.1.100 root@10.0.0.200重启 SSH 服务:
systemctl restart sshd
7. 🔒 增强防火墙规则(可选)
你可以通过设置防火墙规则,限制 SSH 端口仅对特定 IP 开放:
打开防火墙:
# 对于 CentOS/RHEL firewall-cmd --zone=public --add-port=22/tcp --permanent firewall-cmd --reload # 对于 Ubuntu/Debian ufw allow from your_ip_address to any port 22 ufw enable关闭默认端口 22(可选):为了安全起见,可以选择更改 SSH 端口(避免使用默认端口 22)。
vim /etc/ssh/sshd_config修改:
Port 2222 # 例如修改为 2222然后重启 SSH:
systemctl restart sshd并确保防火墙允许新端口:
# 允许 2222 端口 firewall-cmd --zone=public --add-port=2222/tcp --permanent firewall-cmd --reload
8. 📩 最后,测试 SSH 登录
测试:
从本地计算机使用 SSH 密钥登录:
ssh -i ~/.ssh/id_rsa your_user@your_server_ip
7. 测试
(base) ➜ ~ curl ifconfig.me
2409:8934:3f4b:41be:805f:486a:71c2:971b%公众号:AI悦创【二维码】

AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Web、Linux」,招收学员面向国内外,国外占 80%。全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh

更新日志
d9a8c-于18264-于63899-于b2b61-于24617-于70353-于ae8a4-于9bfdc-于4d098-于1c35a-于cbb3a-于76989-于86c50-于027da-于