查看: 2|回复: 0

Linux服务器的必修课 SSH 改密钥登录 + 修改端口 + 关闭密码登录

[复制链接]
发表于 昨天 22:30 | 显示全部楼层 |阅读模式
注意:操作过程中一定不要关闭当前 SSH 窗口。(没搞好你就得去云厂商VNC救援了 悲剧 )一定要先确认密钥和新端口能正常登录,再关闭旧端口或退出当前连接。

一、准备工作

假设本文示例:
服务器用户:root 服务器 IP:1.2.3.4 新 SSH 端口:22222
你需要把 1.2.3.4  22222 改成自己的。

二、本地生成 SSH 密钥

在自己电脑上执行。

Windows PowerShell / Linux / macOS 都可以用

shell
如果是 Windows PowerShell,也可以用:
shell
一路回车即可。
生成后会得到两个文件:
server1_ed25519 私钥,自己保存,不能泄露 server1_ed25519.pub 公钥,放到服务器

三、上传公钥到服务器

Windows PowerShell

 1.2.3.4 改成你的服务器 IP:
shell

Linux / macOS

shell
如果你的系统没有 ssh-copy-id,也可以用:
shell

四、测试密钥登录

Windows PowerShell

shell

Linux / macOS

shell
如果可以正常登录,说明密钥配置成功。

五、一键修改 SSH 端口并关闭密码登录

用密码先登录到服务器
在服务器上执行下面命令。
示例端口是 22222,可以自行修改:
NEW_PORT=22222
mkdir -p /etc/ssh/sshd_config.d
cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F-%H%M%S)
cat > /etc/ssh/sshd_config.d/99-custom-ssh.conf <<EOF
# 自定义 SSH 端口
Port ${NEW_PORT}
# 开启 SSH 密钥登录
PubkeyAuthentication yes
# 禁止 SSH 密码登录
PasswordAuthentication no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no
# root 用户只允许密钥登录
PermitRootLogin prohibit-password
EOF
# 如果安装了 UFW,则自动放行新的 SSH 端口
if command -v ufw >/dev/null 2>&1; then
ufw allow ${NEW_PORT}/tcp comment "放行自定义 SSH 端口"
fi
# 检查 SSH 配置并重载 SSH 服务
sshd -t && systemctl reload ssh || systemctl reload sshd
shell

六、测试新端口登录

不要关闭当前 SSH 窗口,新开一个窗口测试。

Windows PowerShell

shell

Linux / macOS

shell
如果可以正常登录,说明修改成功。

七、关闭旧的 22 端口

确认新端口可以正常登录后,再关闭旧端口。
如果你使用 UFW,可以执行:
shell
或者删除原来的 22 放行规则:
shell
查看当前防火墙规则:
shell
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
关注公众号
返回顶部