如何在 Ubuntu/Debian 中更改默认 SSH 端口并禁用密码登录
本文将介绍如何在 Ubuntu 或 Debian 系统中更改默认的 SSH 端口(22)为其他端口,并关闭密码登录,仅允许通过密钥登录,进一步提升服务器的安全性。
1. 修改 SSH 端口
默认情况下,SSH 监听的是 22 端口,但更改该端口可以降低暴力攻击的可能性。
步骤 1:编辑 SSH 配置文件
使用以下命令打开 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
步骤 2:更改端口号
在文件中找到以下行:
#Port 22
将其修改为您希望的端口号(例如 2022),并去掉注释符号 #:
Port 2022
选择一个大于 1024 且小于 65535 的端口,避免与其他常用端口冲突。
步骤 3:保存并退出编辑器
按 Ctrl + O 保存文件,再按 Ctrl + X 退出。
2. 禁用密码登录
为了强制使用 SSH 密钥登录,我们需要禁用密码登录。
步骤 1:再次编辑 SSH 配置文件
确保在 /etc/ssh/sshd_config 文件中找到以下行:
#PasswordAuthentication yes
将其改为:
PasswordAuthentication no
这将关闭密码登录,仅允许通过密钥进行身份验证。
步骤 2:确保 PubkeyAuthentication 启用
确保 PubkeyAuthentication 设置为 yes,以允许密钥登录:
PubkeyAuthentication yes
3. 重启 SSH 服务
完成上述更改后,需要重启 SSH 服务使配置生效。
sudo systemctl restart ssh
或者:
sudo service ssh restart
4. 配置防火墙(可选)
若您使用 UFW 防火墙(Ubuntu 默认的防火墙),还需要允许新端口通过防火墙。
步骤 1:允许新的 SSH 端口
假设您将端口更改为 2022,运行以下命令:
sudo ufw allow 2022/tcp
步骤 2:禁用 22 端口(仅在确认可以通过新端口成功连接后执行)
sudo ufw deny 22/tcp
步骤 3:重启防火墙
sudo ufw reload
测试新的 SSH 连接
在更改 SSH 配置和防火墙后,建议在另一终端窗口中测试新的 SSH 连接,确保能正常登录。使用以下命令替换 new_port 为您设定的新端口:
ssh -p new_port your_username@your_server_ip
若成功连接,则设置已完成。
总结 通过更改默认 SSH 端口和禁用密码登录,仅允许密钥登录,您的服务器安全性将得到显著提升。确保妥善管理密钥,并定期检查服务器安全状况。
