如何强制使用SSH密钥登录,关闭密码登录?
美国、香港服务器
如何强制使用SSH密钥登录,关闭密码登录?
05-19 来源:
CentOS9 强制 SSH 密钥登录、彻底关闭密码登录
一、先上传本地公钥到服务器(必做,不然自己登不上)
1. 本地生成密钥(Windows/Xshell、Mac/Linux 通用)
Xshell 操作:
工具 → 新建用户密钥 → 选 RSA → 生成 → 保存私钥,复制公钥内容
Linux/Mac 本地生成:
bash
运行
ssh-keygen -t rsa
一路回车,公钥路径 ~/.ssh/id_shturl.
2. 服务器创建密钥存放目录
bash
运行
mkdir -p /root/.ssh
chmod 700 /root/.ssh
3. 写入你的公钥
bash
运行
vi /root/.ssh/authorized_keys
粘贴完整公钥,保存退出。
4. 设置正确权限(权限不对密钥登录失效)
bash
运行
chmod 600 /root/.ssh/authorized_keys
chown -R root:root /root/.ssh
二、修改 SSH 配置关闭密码登录
bash
运行
vi /etc/ssh/sshd_config
找到并修改 / 添加以下参数(全部生效)
ini
# 禁用密码登录
PasswordAuthentication no
# 禁用挑战验证登录
ChallengeResponseAuthentication no
# 启用密钥认证
PubkeyAuthentication yes
# 禁止root密码登录(双重保险)
PermitRootLogin prohibit-password
# 关闭空密码登录
PermitEmptyPasswords no
三、重启 SSH 服务生效
bash
运行
systemctl restart sshd
四、效果
所有账号无法用密码登录 SSH
只能导入对应私钥才能连接
暴力破解、密码猜库直接彻底失效
五、给普通用户也启用密钥登录
切换到对应用户
bash
运行
su - 用户名
同样创建目录 + 放公钥 + 设权限
bash
运行
mkdir -p ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
六、紧急恢复密码登录(连不上时应急)
进服务器控制台 / 网页终端执行:
bash
运行
sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_config
systemctl restart sshd
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快