SSH 与 Git 多账号配置

SSH 配置多个账户

当需要使用多个远程主机或 Git 账户时,使用 SSH 配置文件~/.ssh/config 会很方便。

常用配置项

可以通过 man ssh_config 命令来查看此配置文件的具体语法

  • Host 别名
  • HostName 主机名,IP 或域名
  • Port 端口,默认为 22
  • User 用户名
  • IdentityFile 密钥文件的路径,可以指定多个,会依次尝试
  • IdentitiesOnly 只接受 SSH Key 登录
  • PreferredAuthentications 强制使用 Public Key 验证

转义符

  • %d 本地用户目录
  • %u 本地用户名称
  • %l 本地主机名
  • %h 远程主机名
  • %r 远程用户名

示例

1
2
3
4
5
6
Host myserver
HostName 12.34.56.78 # 服务器地址
Port 22 # ssh 端口号
User ubuntu # 用户名
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes

配置好以后,就可以直接使用别名登录远程主机了:ssh myserver

多个主机可以使用同一个密钥,也可以分别使用各自的密钥。若使用相同密钥,还可以通过使用转义符简化配置:

1
2
3
4
Host github.com gitee.com
HostName %h
User git
IdentityFile ~/.ssh/id_rsa_git

验证:

1
2
ssh -T git@github.com
ssh -T git@gitee.com

已经配置好 ssh,git clone 时仍然需要密码

这通常会在我们使用 https 方式克隆时发生,使用 ssh 方式克隆即可,或者是配置一下缓存。默认是不缓存的,每一次连接都会询问你的用户名和密码,我们可以设置保存到硬盘或是内存。

git-credential-cache - Helper to temporarily store passwords in memory 存储到内存

git-credential-store - Helper to store credentials on disk 存储到硬盘

临时缓存密码

1
git config --global credential.helper cache

保存密码

1
git config credential.helper store

Reference

Licensed under CC BY-NC-SA 4.0