在一台新机器上配置 Git,本质上只需要搞定两件事:
- Git 自身的配置 —— 也就是
~/.gitconfig,管的是用户信息、别名这些个性化设置。 - SSH 的配置 —— 也就是
~/.ssh目录,管的是你和远程仓库(如 GitHub)之间的身份认证。
把这两份配置理清楚、跨平台备份好,以后到新客户机上几分钟就能恢复完整的 Git 使用环境。
一、Git 自身配置:.gitconfig
~/.gitconfig 是可以完全个性化的一份配置,最常用的功能是别名(alias),可以把常用的组合命令简化成一条短命令。比如我自己很喜欢的一个别名:
| |
配置好之后,提交并推送只需要一行:
| |
~/.gitconfig 里只保留跨平台通用的配置(用户名、邮箱、别名等),不要放任何密钥或本机专属路径,这样才能直接复制到新机器上使用。
二、SSH 配置与连接
Git 的 remote 有多种协议(HTTPS、SSH 等),日常开发中最常用的是 SSH。SSH 既可以用来登录服务器,也可以用来完成 Git 的 remote 交互,配置一次即可两者通用。
1. 生成 Ed25519 密钥
现在推荐使用 Ed25519 算法生成密钥,相比传统的 RSA,它的密钥更短、性能更好、安全性也更高:
| |
-t ed25519:指定密钥类型为 Ed25519-C:添加注释,通常填邮箱方便识别
执行后会依次提示:
- 保存路径:直接回车使用默认路径
~/.ssh/id_ed25519,或者自定义一个路径(比如按用途区分多把 key) - passphrase(密钥口令):建议设置一个口令,为私钥再加一层保护
生成完成后会得到一对密钥:
id_ed25519(或自定义文件名)—— 私钥,永远不要分享给任何人id_ed25519.pub(或xxx.pub)—— 公钥,需要添加到 GitHub / GitLab 等平台
2. 配置 ~/.ssh/config
~/.ssh 目录下有一个核心配置文件,文件名就是 config(没有扩展名)。用于 Git 推送的 SSH 配置,以 GitHub 为例:
| |
Host:为这份配置起的别名,通常直接写域名HostName:实际连接的服务器地址User:Git 服务普遍固定为gitIdentityFile:指向上一步生成的私钥路径
如果你有多个平台(GitHub、GitLab、公司自建仓库等),可以在同一个 config 文件里继续追加多个 Host 块,分别指定各自的 IdentityFile。
3. 把公钥添加到远程平台
打印公钥内容并复制:
| |
将输出内容粘贴到 GitHub 的 Settings → SSH and GPG keys → New SSH key 页面保存。
4. 测试连接
配置完成后,使用以下命令测试是否连接成功:
| |
如果看到类似 Hi <username>! You've successfully authenticated... 的提示,说明 SSH 配置已经生效。
三、正确的文件权限
在 Linux 上(我常用的是 Debian),如果用普通用户登录,SSH 对目录和文件的权限要求比较严格,权限不对会导致密钥被 SSH 忽略甚至拒绝连接。
1. .ssh 目录本身只能自己访问:
| |
2. 私钥文件只能自己读写:
| |
这里的 id_ed25519 就是上面生成的私钥文件,公钥(.pub 结尾)权限相对宽松,644 即可,一般不需要额外处理。
| 路径 | 建议权限 | 说明 |
|---|---|---|
~/.ssh | 700 | 目录仅所有者可读写执行 |
~/.ssh/id_ed25519(私钥) | 600 | 仅所有者可读写 |
~/.ssh/id_ed25519.pub(公钥) | 644 | 可以被其他人读取 |
~/.ssh/config | 600 | 避免被其他用户篡改 |
四、小结
一份完整的 Git + SSH 环境,其实就是两份配置文件的组合:
~/.gitconfig:跨平台通用,保留用户信息与别名,不含私密信息,可以直接复制。~/.ssh/config:不含私钥内容,可以直接复制或者手写一份,参数很简单。- 私钥(如
id_ed25519)本身不要跨平台复制/共享,新机器上按需重新生成一对,并把公钥添加到对应平台即可。
按照「生成密钥 → 配置 SSH → 添加公钥 → 校正权限」这四步,几分钟就能在一台新机器上重新用上熟悉的 Git 和远程仓库。