1. 为什么必须严格控制私钥文件权限?
-
安全机制:SSH 协议强制要求私钥文件必须仅对所有者可读,防止未授权访问。
-
风险:若权限过松(如其他用户可读),SSH 客户端会拒绝连接,避免私钥泄露或被篡改。
-
典型错误提示:
-
Permissions 0644 for 'id_rsa' are too open.It is required that your private key files are NOT accessible by others.
2. 正确权限设置
私钥文件(如 id_rsa
)
-
最小安全权限:
chmod 400 ~/.ssh/id_rsa # 仅所有者可读(r--------)
允许的权限:
-
chmod 600 ~/.ssh/id_rsa # 所有者可读写(rw-------)
-
400
(推荐):防止误修改私钥。 -
600
(允许):允许修改,但需谨慎操作。
-
禁止的权限
-
500
(r-x
):私钥无需执行权限。 -
644
(rw-r--r--
):其他用户可读。 -
777
(完全开放):极度危险。
3. 其他相关文件权限
公钥文件(如 id_rsa.pub
)
-
权限要求宽松,通常设为 644:
-
chmod 644 ~/.ssh/id_rsa.pub
~/.ssh
目录
-
必须限制为 700,禁止其他用户访问:
-
chmod 700 ~/.ssh
authorized_keys
文件
-
仅允许所有者读写(600):
-
chmod 600 ~/.ssh/authorized_keys
4. 操作示例
设置私钥权限
# 1. 检查当前权限ls -l ~/.ssh/id_rsa# 2. 设置权限为 400chmod 400 ~/.ssh/id_rsa# 3. 验证结果ls -l ~/.ssh/id_rsa# 正确输出:-r-------- 1 user user 2602 Jan 1 00:00 id_rsa
修复权限错误
若因权限问题导致 SSH 连接失败:
-
按上述步骤修正权限。
-
重新尝试连接:
-
ssh -i ~/.ssh/id_rsa user@remote_host
5. 安全最佳实践
-
最小权限原则:仅授予必要权限(如私钥设为
400
)。 -
定期检查:使用以下命令审计权限:
-
find ~/.ssh -type f -name "id_*" -exec ls -l {} \;
-
备份与隔离:
-
私钥不共享、不上传网络。
-
使用加密存储(如密码保护的密钥库)。
-
总结
文件/目录 | 推荐权限 | 权限含义 |
---|---|---|
id_rsa (私钥) | 400 | 仅所有者可读 |
id_rsa.pub (公钥) | 644 | 所有者可读写,其他用户可读 |
~/.ssh 目录 | 700 | 仅所有者可读、写、执行 |
authorized_keys | 600 | 仅所有者可读写 |