本机用密钥连接VPS,SSH却提示UNPROTECTED PRIVATE KEY FILE并忽略密钥。这个警告指向的是发起连接的电脑上的私钥文件,不是先去改服务器的登录配置。
先确认命令里指定的是哪把私钥,再收紧它的访问权限。不要把私钥上传到网页或发给他人核对。

警告到底在说什么
OpenSSH会拒绝使用其他用户也能访问的私钥。此时继续输入密码或看到Permission denied,并不表示服务器公钥一定有问题;先让客户端真正读取私钥,后续认证结果才有判断价值。
找到实际使用的文件
检查连接命令中的-i路径;若未指定,可用ssh -v 用户名@服务器地址查看客户端尝试的身份文件。执行ls -l ~/.ssh/你的私钥查看权限与所有者,确认文件属于当前登录用户。不要把带有私钥内容的调试输出贴到公共平台。
在Linux或macOS上收紧权限
针对确认无误的私钥执行chmod 600 ~/.ssh/你的私钥,并检查父目录,必要时执行chmod 700 ~/.ssh。这里的600表示仅文件所有者可读写;目录700限制其他用户遍历。随后用同一条ssh -i ~/.ssh/你的私钥 用户名@服务器地址重试。只修改私钥及其目录,别递归改动整个家目录。
Windows客户端应检查访问控制
Windows的OpenSSH会按文件访问控制列表判断私钥是否暴露给其他账户。先确认私钥放在当前用户目录,并在文件属性的安全页移除不必要的其他用户访问权限;不要照搬Linux的chmod命令。使用WSL时,私钥若放在Windows挂载盘上,权限语义还可能不同,移到WSL用户的~/.ssh后再按Linux方式检查。
仍无法登录时看下一条错误
警告消失后若仍是Permission denied (publickey),再核对服务器登录用户、公钥是否写入该用户的authorized_keys,以及私钥是否与公钥配对。权限修复与密钥匹配是两道不同检查。使用萤光云或LightNode云服务器时,也应从服务商控制台确认实例的登录用户和所绑定密钥,避免把客户端问题误判成服务器网络故障。
验收标准
再次连接时不再出现UNPROTECTED PRIVATE KEY FILE,ssh -v显示客户端正在尝试预期密钥。若随后完成登录,说明客户端权限和服务端授权均已通过;若只消除了警告,则继续核对服务端公钥和账户,不要降低服务器认证安全设置来绕过问题。
FAQ
能把私钥改成644吗?不能。644允许其他用户读取,OpenSSH可能继续拒绝。公钥也要600吗?公钥不是私钥,警告针对实际使用的私钥文件;仍需按客户端和服务器目录的安全要求设置。
温馨提示
私钥一旦泄露,单纯改权限无法撤销已外泄的副本。应生成新密钥、更新服务器授权并撤销旧公钥。不要用关闭严格主机密钥检查或改成密码登录来掩盖私钥暴露。


