Multiple SSH Keys Settings For Different Git Platform[Github、Gitlab]

我们在使用 Github、Gitlab 或者 JetBrains Space 时通常使用 SSH 密钥可以连接 Git 服务,而无需在每次访问时都提供用户名和个人访问令牌。 另外现在大量平台启用账户登录多次验证,也促进我们避免使用账号密码登录。

为了便于管理我们通常会为每个 Git 平台配置不同的 SSH KEY,然后通过 ~/.ssh/config 配置每个平台对应的 SSH KEY。

创建多个 SSH KEY

使用如下命令创建 id_github,注意提示输入文件名时请修改成 id_github

ssh-keygen -t ed25519 -C "coolbeevip@github.com"

使用同样的方法我们分别创建 id_gitlabid_github,这时在的本地的 ~/.ssh 目录下会得到如下文件

  • id_github(私钥)、id_github.pub(公钥)
  • id_gitlab(私钥)、id_gitlab.pub(公钥)

将 *.pub 文件内容分别导入到 Git 服务中,详细方式请参考 Github and SSH keysGitLab and SSH keysJetBrains Space and SSH keys

配置 SSH

编辑 ~/.ssh/config 文件为每个 Git 地址配置不同的私钥

Host github.com
    ServerAliveInterval 60
    UseKeychain yes
    IdentityFile ~/.ssh/id_github

Host gitlab.com
    ServerAliveInterval 60
    UseKeychain yes
    IdentityFile ~/.ssh/id_gitlab

验证 Github 平台

ssh -T git@github.com
Hi coolbeevip! You've successfully authenticated, but GitHub does not provide shell access.

验证公司 Gitlab,因为公司服务的端口不是默认端口,所以需要使用 p 参数指定

ssh -T git@mycompany.com -p 20022
Welcome to GitLab, @zhanglei!

用户和邮件信息

我们知道可以通过一下命令设置全局用户名和邮箱

git config --global user.name "Lei Zhang"
git config --global user.email coolbeevip@gmail.com

当你需要在不同的仓库设置不同的用户信息时,您可以在本地代码仓库目录下执行如下命令

git config user.name "coolbeevip"
git config user.email coolbeevip@gmail.com