macOS上SSH提示“Permission denied”多因认证机制或配置问题:一是私钥(600)和.ssh目录(700)权限过松;二是Ventura+系统默认禁用ssh-rsa算法,需在~/.ssh/config中添加PubkeyAcceptedAlgorithms +ssh-rsa和HostkeyAlgorithms +ssh-rsa;三是服务端authorized_keys权限非600、属主错误或sshd_config未启用PubkeyAuthentication;四是报错类型决定排查方向——(publickey)查密钥流程,(password)查服务端密码登录是否开启。
macos 上 ssh 连接提示“permission denied”,多数不是密码输错,而是认证机制或配置层面被拒绝。核心问题往往出在密钥不被接受、权限设置过松、服务端限制,或 macos ventura 及之后版本对加密算法的默认禁用。下面分四类常见场景给出直接可操作的解决路径。
检查私钥文件和 .ssh 目录权限
OpenSSH 客户端强制校验本地密钥安全性,若权限太宽松会直接跳过加载,报 Permission denied (publickey)。
- 运行
ls -l ~/.ssh/id_rsa,确认输出首字段是-rw-------(即权限为 600);如果不是,执行:chmod 600 ~/.ssh/id_rsa - 同时确保
~/.ssh目录权限为 700:chmod 700 ~/.ssh - 公钥文件(如
id_rsa.pub)权限无严格要求,但不要设成 777 或 666
适配 macOS Ventura 及更新系统(OpenSSH 9.0+)
从 OpenSSH 8.8 起,默认禁用 ssh-rsa(RSA/SHA-1)签名算法。升级到 Ventura、Sonoma 或 Sequoia 后,老服务器(如 Ubuntu 20.04、旧版 NAS、部分 Git 托管平台)常因此拒绝连接。
- 在
~/.ssh/config对应主机段添加两行(替换your-host为实际别名或 IP):Host your-host<br> PubkeyAcceptedAlgorithms +ssh-rsa<br> HostkeyAlgorithms +ssh-rsa
- 保存后重试
ssh user@your-host;如仍失败,加-vvv看调试日志中是否出现no matching key exchange method或no matching host key type,进一步确认是算法兼容问题
验证服务端公钥是否正确部署
客户端有密钥 ≠ 服务端认得你。常见疏漏包括:
- 公钥未追加进远程用户的
~/.ssh/authorized_keys(注意是追加>>,不是覆盖>) -
authorized_keys文件权限不是 600,或其所在目录~/.ssh权限大于 755(推荐 700),或属主不是该用户(chown $USER:$USER ~/.ssh ~/.ssh/authorized_keys) - 服务端
/etc/ssh/sshd_config中关闭了密钥登录:
确认含PubkeyAuthentication yes,且未被注释;改完需sudo systemctl restart sshd
区分报错类型:是密码拒绝还是密钥拒绝?
看完整提示文字很关键:
-
Permission denied, please try again.→ 出现在输密码后 → 多数是服务端禁用了密码登录(PasswordAuthentication no),或用户被锁定、家目录缺失(尤其 macOS 服务器上“仅限共享”账户无 home 目录会报此错) -
Permission denied (publickey).→ 没弹密码框就报错 → 纯密钥流程失败,按前三个步骤重点排查 -
Connection refused→ 不是权限问题,是网络层不通(端口未开放、防火墙拦截、sshd 未运行)


















