登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Linux 禁止所有账号密码登录 SSH,并配置 root 密钥登录 ...
Linux 禁止所有账号密码登录 SSH,并配置 root 密钥登录
[ 复制链接 ]
任俊慧
2025-6-7 13:41:13
Linux 禁止所有账号密码登录 SSH,并配置 root 密钥登录
目标
禁止所有用户(包括 root)通过密码登录 SSH
。
确保 root 用户仅能通过密钥登录
。
一、操作步骤
1. 生成 root 用户的 SSH 密钥对
在本地客户端(如你的电脑)生成密钥对,并将公钥上传到服务器:
# 本地生成密钥对(推荐 ed25519 算法,更安全)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_root -C "root@your_server"
# 将公钥上传到服务器的 root 用户
ssh-copy-id -i ~/.ssh/id_ed25519_root.pub root@your_server_ip
复制代码
说明
:
-f ~/.ssh/id_ed25519_root:指定密钥文件名,避免覆盖默认密钥。
ssh-copy-id 会自动将公钥追加到服务器的 ~/.ssh/authorized_keys。
2. 修改 SSH 服务配置
编辑 /etc/ssh/sshd_config,确保以下配置生效:
# 禁用 root 密码登录(即使配置了密钥,也显式禁止密码)
PermitRootLogin prohibit-password
# 禁用所有用户的密码登录
PasswordAuthentication no
ChallengeResponseAuthentication no
# 可选:强制所有用户仅能通过密钥登录(即使配置了其他认证方式)
AuthenticationMethods publickey
# 其他安全建议(可选)
UsePAM no # 禁用 PAM 认证(需确保密钥登录正常)
PermitEmptyPasswords no # 禁止空密码登录
复制代码
3. 设置正确的文件权限
确保服务器上的密钥文件和目录权限安全:
sudo chmod 700 /root/.ssh
sudo chmod 600 /root/.ssh/authorized_keys
sudo chown -R root:root /root/.ssh
复制代码
4. 重启 SSH 服务
应用配置更改:
sudo systemctl restart sshd
复制代码
5. 验证配置
测试 root 登录
:
ssh -i ~/.ssh/id_ed25519_root root@your_server_ip
复制代码
应能成功登录,而密码登录会被拒绝。
测试普通用户登录
:
若普通用户未配置密钥,尝试密码登录会被拒绝:
ssh username@your_server_ip # 提示 "Permission denied (publickey)"
复制代码
二、关键配置说明
配置项作用PermitRootLogin prohibit-password禁止 root 用户通过密码登录,但仍允许密钥登录。PasswordAuthentication no禁用所有用户的密码登录(包括 root 和普通用户)。ChallengeResponseAuthentication no禁用挑战-响应认证(如键盘交互式认证)。AuthenticationMethods publickey强制所有用户仅能通过公钥认证(即使配置了其他认证方式)。
三、注意事项
备份配置
:
修改前备份 /etc/ssh/sshd_config:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
复制代码
应急方案
:
确保当前会话未断开,或保留一个备用会话(如通过控制台直接登录服务器)。
若配置错误导致无法登录,可通过控制台恢复配置或临时启用密码登录。
密钥安全
:
妥善保管私钥(如设置强密码保护私钥文件)。
避免将私钥上传到不可信的环境。
防火墙和 SELinux
:
确保 SSH 端口(默认 22)开放:
sudo firewall-cmd --permanent --add-service=sshsudo firewall-cmd --reload
复制代码
若启用了 SELinux,确保 .ssh 目录上下文正确:
sudo restorecon -Rv /root/.ssh
复制代码
四、完整配置示例
# /etc/ssh/sshd_config
Port 22
ListenAddress 0.0.0.0
# 认证方式
PermitRootLogin prohibit-password
PasswordAuthentication no
ChallengeResponseAuthentication no
AuthenticationMethods publickey
# 其他安全配置
UsePAM no
PermitEmptyPasswords no
PrintMotd no
X11Forwarding no
复制代码
五、总结
生成 root 密钥
:在本地生成密钥对,并通过 ssh-copy-id 上传到服务器。
禁用密码登录
:通过 PasswordAuthentication no 和 PermitRootLogin prohibit-password 实现。
验证配置
:确保 root 和普通用户均无法通过密码登录,仅能通过密钥登录。
通过以上步骤,你的 CentOS 9 服务器将完全禁止密码登录,仅允许密钥认证,显著提升安全性。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
任俊慧
2025-6-7 13:41:13
关注
0
粉丝关注
15
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
接快背
9988
7
氛疵
9988
8
恐肩
9986
9
虽裘侪
9986
10
里豳朝
9986
查看更多