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
。