Permission denied本质是SSH身份验证失败,需据错误后缀分场景排查:(publickey)为密钥问题,(password)为密码认证被禁,(publickey,gssapi…)为用户被服务端拒绝;须检查密钥权限(600/700)、ssh-agent加载、sshd_config配置及known_hosts干扰。
mac 上 ssh 连接远程服务器提示 “permission denied”,本质是身份验证失败,不是网络不通。问题通常出在认证方式、密钥配置或服务端策略上,需分场景排查。
确认是哪种 Permission denied
错误信息末尾有关键线索:
- Permission denied (publickey):SSH 尝试用密钥登录但失败,可能私钥未加载、公钥没部署、或权限不对;
- Permission denied, please try again 或 (password):SSH 尝试密码登录被拒,常见于服务端禁用了密码认证;
- Permission denied (publickey,gssapi-keyex,gssapi-with-mic):所有认证方式都被拒绝,大概率是服务端根本没允许你这个用户登录,或 SSH 服务未正确响应。
检查本地密钥权限和加载状态
OpenSSH 对密钥文件权限非常严格,稍宽松就会直接跳过该密钥:
- 运行 ls -l ~/.ssh/id_rsa*,确保私钥(如 id_rsa)权限为 600(chmod 600 ~/.ssh/id_rsa);
- 确保 ~/.ssh 目录权限为 700(chmod 700 ~/.ssh);
- 运行 ssh-add -l 查看私钥是否已加入 agent;若无输出,执行 ssh-add ~/.ssh/id_rsa(macOS 上建议加 --apple-use-keychain 持久化);
- 若用非默认密钥名(如 id_ed25519),连接时必须显式指定:ssh -i ~/.ssh/mykey user@host。
验证服务端 SSH 配置是否放行你
即使密钥正确,服务端也可能拒绝你登录:
- 用 Web 终端或控制台登录服务器,检查 /etc/ssh/sshd_config 中这几项:
- PubkeyAuthentication yes(启用密钥登录);
- PasswordAuthentication yes(如需密码登录,阿里云/腾讯云新实例常默认设为 no);
- PermitRootLogin yes 或 without-password(如你用 root 登录);
- AllowUsers 或 AllowGroups 是否包含你的用户名。
- 改完配置后务必重启服务:sudo systemctl restart sshd(Ubuntu/Debian)或 sudo launchctl kickstart -k system/com.openssh.sshd(macOS 作为服务端时)。
排除 known_hosts 和主机密钥变更干扰
如果之前连过同一 IP,但服务器重装或密钥轮换过,SSH 会因指纹不匹配而中断,表现为“Host key verification failed”——它有时也会被终端或 VSCode 错误归类为 Permission denied:
- 运行 ssh-keygen -R your_server_ip 或 ssh-keygen -R myserver(若用了 config 别名);
- 再试一次 ssh user@host,首次连接会提示输入 yes 确认新指纹;
- 不要临时禁用 StrictHostKeyChecking no,除非你完全信任网络环境。











