"UNPROTECTED PRIVATE KEY FILE" 是什么意思
SSH 拒绝使用你的私钥,因为这个文件能被机器上的其他用户读到。修复就一条命令——把文件权限收紧到 600(仅属主可读写):
chmod 600 ~/.ssh/id_ed25519 Linux 或 macOS 上这就够了。本文剩下的部分讲为什么 SSH 这么严、Windows 怎么修、以及为什么这个问题在做得好的移动客户端上根本不会出现。
报错全文
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/you/.ssh/id_ed25519' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored. 关键的一行是 "This private key will be ignored."——SSH 不只是警告,而是直接拒绝递这把密钥,所以连接随后会以 Permission denied (publickey) 失败。
SSH 为什么这么严
私钥是证明"你就是你"的唯一秘密。如果机器上别的用户能读到它(0644 = 属主可写、所有人可读),他们就能复制走、在每一台信任这把密钥的服务器上冒充你。SSH 把全员可读的私钥默认当作"已泄露",拒绝碰它。这是特性,不是找茬。
Linux / macOS 上的修复
chmod 600 ~/.ssh/id_ed25519 # 私钥:仅属主可读写
chmod 644 ~/.ssh/id_ed25519.pub # 公钥可保持可读
chmod 700 ~/.ssh # 目录:仅属主
chown $USER ~/.ssh/id_ed25519 # 确认归你所有 最常见的成因:从另一台机器、U 盘或云盘复制密钥过来——复制出来的副本带默认 644 权限。重新收紧到 600 每次都能修好。(同一个文件、连接的另一端:如果是服务器上的 authorized_keys 权限太开放,看 publickey 那篇。)
Windows 上的修复
Windows 不用 chmod;Windows 版 OpenSSH 检查的是 NTFS ACL。干净的修法是移除继承权限、只授予你自己:
icacls "C:\Users\You\.ssh\id_ed25519" /inheritance:r
icacls "C:\Users\You\.ssh\id_ed25519" /grant:r "%USERNAME%:R" 或在文件 属性 → 安全 → 高级 里:禁用继承,删掉除你自己账号外的所有条目。
为什么这个错在好的移动客户端上不会有
这整类报错是文件系统权限问题——它存在的唯一原因是密钥放在一个 OS 用户能读的普通文件里。做得好的移动 SSH 客户端不把密钥存成散落的文件:密钥存在设备的安全存储(iOS/Android Keychain)里,只有 App 能访问。没有 chmod 可以填错,"UNPROTECTED PRIVATE KEY FILE" 就根本不可能发生。
在 TermAI 里,App 替你生成 Ed25519 密钥并安全存储;你用它连接,需要装到服务器上时用一键部署把公钥那半写进 authorized_keys。私钥永远不会变成一个你得操心权限的文件。
常见问题
怎么修 "UNPROTECTED PRIVATE KEY FILE"?
对私钥跑 chmod 600(并 chmod 700 ~/.ssh)。Windows 上移除继承 ACL、只授予你自己。SSH 就不再忽略这把密钥。
SSH 私钥该是什么权限?600(仅属主读写)。.ssh 目录应为 700,公钥 .pub 可为 644。
为什么复制密钥后才开始报这个?
从 U 盘、云存储或另一台机器复制出来的副本带默认 644(全员可读)权限。重新收紧到 600。
不管它危险吗?
危险——全员可读的私钥可能被机器上任何其他用户偷走。修权限,别绕过这个检查。
快速事实
- 含义:私钥文件能被他人读到,SSH 拒绝使用(随后以 publickey 失败)
- 修复(Linux/macOS):
chmod 600 ~/.ssh/id_ed25519、chmod 700 ~/.ssh - 修复(Windows):移除继承 ACL、只授予你自己(
icacls … /inheritance:r) - 正确权限:私钥 600、
.ssh目录 700、公钥 644 - 移动端:密钥存设备 Keychain、不是文件——此错不会发生
Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.