SSH免密登录失败主因是权限错误:~/.ssh目录必须700,私钥文件(如id_rsa)必须600,authorized_keys推荐600或644,家目录建议755;任一权限宽松都会被OpenSSH拒绝认证。

SSH免密登录失败,十次有八次是权限设错了。核心就两点:私钥文件不能被别人读,authorized_keys 不能被别人改。系统会严格检查这些路径的权限,稍有宽松就直接拒之门外。
~/.ssh 目录必须是 700
这个目录是你本地和远程服务器上存放密钥相关文件的地方。它必须只对属主可读、可写、可执行,其他任何人(包括同组用户)都不能有任何访问权限。 否则 SSH 客户端或服务端会认为“这目录太不安全”,直接放弃使用密钥认证。 操作命令:
chmod 700 ~/.ssh
注意:不要用 chmod 755 或 777,哪怕只是临时测试也不行。700 是硬性要求。
私钥文件(如 id_rsa)必须是 600
私钥是你身份的终极凭证,一旦泄露,等于把服务器大门钥匙交出去。SSH 强制要求私钥文件只能由属主读写,连属组和其他人都不能打开看一眼。 如果权限是 644、640 甚至 666,OpenSSH 会拒绝加载该密钥,并在 ssh -v 调试输出里明确提示 “UNPROTECTED PRIVATE KEY FILE!”。 操作命令:
chmod 600 ~/.ssh/id_rsa
如果你用了别的名字(比如 id_ed25519),同样要设为 600。
authorized_keys 文件必须是 600 或 644
这是服务器上用来存放你公钥的白名单文件。它的权限比私钥略宽松,但仍有底线: - 推荐设为 600(仅属主可读写),最安全; - 允许设为 644(属主读写、属组和其他人只读),前提是该文件属主和属组一致,且属组内没有不可信成员; - 绝对禁止 664、666、755 等开放写权限的组合——只要组或其他人能写,SSH 就会拒绝认证。 操作命令(任选其一):
chmod 600 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/authorized_keys
家目录(~)不能是 777 或过度开放
虽然不是直接参与认证,但 OpenSSH 会检查用户家目录的权限。如果家目录对组或其他人有写权限(比如 775、777),部分 SSH 服务端(尤其是较新版本或加固配置)会拒绝读取 ~/.ssh/authorized_keys,理由是“家目录不安全,公钥可能被篡改”。 稳妥做法是保持家目录为 755(属主全权,组和其他人只读+执行)或 700(更严格)。 操作命令:
chmod 755 ~
如果你发现改了所有 .ssh 权限仍失败,先检查这条。











