SSH秘钥配置介绍
在 SSH 和 Git 场景下,密钥文件的正确格式和命名规则如下:
1. 密钥文件的默认命名与后缀
SSH 密钥通常由一对文件组成(无严格后缀要求,但约定俗成):
-
私钥文件(必须严格保密):
-
默认名称:
id_rsa、id_ed25519 -
自定义名称示例:
my_private_key、key.txt -
无强制后缀,但内容必须是有效的 PEM 格式或 OpenSSH 私钥格式。
-
-
公钥文件(可公开):
-
默认名称:
id_rsa.pub、id_ed25519.pub -
自定义名称示例:
my_public_key.pub、key.txt.pub -
通常以
.pub结尾,内容必须以ssh-rsa或ssh-ed25519开头。
-
2. 密钥文件的正确格式
(1)公钥文件内容格式
-
必须包含三部分(示例):
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC... your_email@example.com
或 Ed25519 密钥:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your_email@example.com
-
开头:密钥类型(
ssh-rsa/ssh-ed25519)。 -
中间:Base64 编码的密钥内容。
-
结尾:注释(通常为邮箱,可选)。
-
-
验证公钥格式:
cat ~/.ssh/id_rsa.pub | ssh-keygen -l -f - # 检查指纹
(2)私钥文件内容格式
-
RSA 私钥(示例):
-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn ... -----END OPENSSH PRIVATE KEY-----
-
Ed25519 私钥:
-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABBQbZzWrP ... -----END OPENSSH PRIVATE KEY-----
-
验证私钥格式:
ssh-keygen -p -f ~/.ssh/id_rsa # 检查或修改密码(无报错则格式正确)
4. 密钥文件权限要求
| 文件类型 | 所需权限 | 命令示例 |
|---|---|---|
| 私钥 | 600(仅用户可读写) | chmod 600 ~/rsa_key_pair/key.txt |
| 公钥 | 644(用户可读写,其他可读) | chmod 644 ~/rsa_key_pair/key.txt.pub |
.ssh 目录 | 700(仅用户可读写执行) | chmod 700 ~/.ssh |
5. 常见错误案例
| 问题 | 错误示例 | 修复方法 |
|---|---|---|
| 私钥权限过宽 | -rw-r--r-- | chmod 600 key.txt |
| 公钥内容缺失注释 | ssh-rsa AAAAB3Nza...(无邮箱) | 无需修复,但建议添加注释 |
| 私钥格式损坏 | 文件内容被截断或修改 | 重新生成密钥 |
总结
-
文件名:可自定义(如
key.txt),但建议遵循默认命名(id_算法)避免混淆。 -
文件内容:必须符合 SSH 标准格式(通过
ssh-keygen生成的最安全)。 -
权限:私钥必须严格限制为
600。
