SSH登录成功但远程机器提示权限拒绝问题咨询
嘿,我来帮你搞定这个头疼的问题——公钥能登录进去,但操作时碰权限拒绝,这种情况我处理过不少,大概率是几个安全相关的权限配置没到位,咱们一步步来排查:
检查
.ssh目录的权限与归属
SSH对~/.ssh目录的权限要求很严,哪怕authorized_keys权限对了,父目录权限太松也会触发安全限制。你得确保目录权限是700(只有所有者能读写执行),而且归属是你的用户myuser:chmod 700 ~/.ssh chown myuser:myuser ~/.ssh确认
authorized_keys的严格权限
你提到文件是可读的,但SSH要求这个文件必须是600权限(只有所有者能读写),如果是644这种开放权限,SSH会因为安全风险拒绝生效。执行这个命令修正:chmod 600 ~/.ssh/authorized_keys检查SSH服务器的核心配置
有时候sshd的配置会限制公钥认证,你得确认以下两个参数在/etc/ssh/sshd_config里是正确的:# 用grep快速查找 grep -E "PubkeyAuthentication|AuthorizedKeysFile" /etc/ssh/sshd_config确保
PubkeyAuthentication yes,且AuthorizedKeysFile指向%h/.ssh/authorized_keys(这是默认值,但有时候会被修改)。改完配置后记得重启SSH服务:# 针对systemd系统(比如Ubuntu 16.04+/CentOS 7+) sudo systemctl restart sshd # 针对老版本init系统 sudo service ssh restart排查SELinux的上下文问题
如果你的远程机器开启了SELinux,可能authorized_keys的文件上下文不对,导致SSH无法识别。可以用这条命令修复上下文:restorecon -Rv ~/.ssh要是修复后还是不行,可以临时关闭SELinux测试(
sudo setenforce 0),如果问题消失,再去调整SELinux规则而不是永久关闭。检查用户家目录的权限
家目录的权限也不能太开放!如果家目录有其他用户的写权限(比如777),SSH会认为这是安全隐患,拒绝公钥认证后的正常操作。检查并修正:# 查看家目录权限 ls -ld ~ # 修正为755(推荐)或700 chmod 755 ~查看SSH日志定位精准原因
要是上面的步骤都没解决,直接看远程机器的认证日志,里面会有具体的拒绝原因:- Debian/Ubuntu系统:
tail -f /var/log/auth.log - RHEL/CentOS系统:
tail -f /var/log/secure
比如日志里会明确提示“Permissions 0644 for '/home/myuser/.ssh/authorized_keys' are too open”,这样就能直接定位问题点。
- Debian/Ubuntu系统:
内容的提问来源于stack exchange,提问作者pranphy

