preloader

曾梦想仗剑走天涯,后来 bug 多没去!

Git配置多个SSH key和git账号

Menu

使用场景

作为开发人员,可能拥有多个公司项目或者个人项目git账号,但是自己肯定希望一个笔记本就能解决登录管理公司项目、个人项目的 git 库。一台电脑多个github账号配置使用,现在我就来告诉大家我的学习心得和所遇到的的坑!

首先感谢网上提供详细文档教程的用户,大家可以参考下:意林小站的韩子迟博客

基本步骤

  1. 安装配置 Git
  2. 生成多个 SSH key 公共密钥
  3. 配置 SSH config 相关参数
  4. 更新本地项目以及 .git

详细步骤

安装 GIt

  • Mac OS 安装方法:

    • 通过homebrew 安装 Git 官网地址
    • 方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了
  • Windows安装Git方法:

    • 可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可。
      安装完成后,在开始菜单里找到 “Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!

    安装完成后,还需要做全局设置,在命令行输入:

$ git config user.name "yourName" // 给自己起个用户名
$ git config user.email  "yourEmail@qq.com" // 填写自己的邮箱

生成新的ssh key

按个人需求来,一般按项目名或者类别来命名。我个人就是喜欢分为公司、个人的 ssh key。用过 git 的会有默认的 id_rsa.pub 那就在生成新的 key

  • 生成新的 key 在终端执行命令:
$ ssh-keygen -t rsa -C "youremail@xxx.com"
  • 设置 key 名称
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/liudou/.ssh/id_rsa): id_rsa_company(命名:此处 key 给公司用)
Enter passphrase (empty for no passphrase):  (一般直接回车略过,避免繁琐设置密码)
Enter same passphrase again:(再次输入密码,回车略过) 
Your identification has been saved in 
id_rsa_TestSSH_github.
Your public key has been saved in 
id_rsa_company.
  • 拷贝密钥到个人账号
    一般直接打印复制到 各大git管理平台个人账号保存,可以终端输入:
$ cd ~/.ssh
$ ls 
$ cat id_rsa_company.pub // 根据个人命名来查询

显示出来的内容复制到,我用的 阿里云key管理
如果打算拷贝你的公钥到你的粘贴板下,请参考你的操作系统使用以下的命令:

Windows:

$ clip < ~/.ssh/id_rsa.pub

Mac:

$ pbcopy < ~/.ssh/id_rsa.pub

GNU/Linux (requires xclip):

$ xclip -sel clip < ~/.ssh/id_rsa.pub

保存到对应的git账号中 ssh-key 后,ssh服务器 默认是去找 id_rsa ,现在需要把新增的 key 添加到 ssh-agent 中,这样ssh服务器才能认识新加的 id_rsa_company
此处需要进行如下操作:

$ ssh-add -K ~/.ssh/id_rsa_company

Mac 用户: 这里为什么加上了一个-K参数呢?因为在Mac上,当系统重启后会“忘记”这个密钥,所以通过指定-K把SSH key导入到密钥链中。

查看添加结果 :

$ ssh-add -l

配置本地 SSH config 文件

  1. 此处配置 ,需要新建 config 文件
    在终端输入以下命令
    $ vim  ~/.ssh/config
    
  2. 写入配置内容,如下
#github
Host github
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

#aliyun 企业项目 默认 code.aliyun.com
Host code.aliyun.com // 此处别名可以自己定义
HostName code.aliyun.com // 对应 git 服务平台域名不做改动
User silence // 此处自己定义用户名
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company // 输入新增 key 的路径

#aliyun 个人
Host sunrise #自定义 host别名 sunrise 等同于 code.aliyun.com
HostName code.aliyun.com
User Oracle
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_own

配置好后保存:
Esc 退出编辑模式后 按进入末行模式, 输入wq 保存退出!

此配置文件, 我用上了 github 个人账号、aliyun 的企业子账号、个人账号共三个账号。配置文件至关重要的就是 Host别名code.aliyun.com 域名相同只能用别名代替,达到同aliyun平台多个 git 账号连接

  1. 测试配置是否可用
$ ssh -T git@sunrise  (sunrise 是 config 文件中的 Host别名)

如果连接成功会返回:

$ Welcome to GIT, 渡! // 用户名自己在git账号定义的 可以区分 个人 和 企业 git账号

git 更新项目代码

此处需要说明,因为配置的原因,用了 Host 别名 key 配置的 git 账号。该账号下的 git 库,需要做处理

  • 该账号本地已有的 git 项目,需要进入项目目录修改.git/config 文件
[remote "origin"]
    url = git@sunrise:23165-Sunrise/note.git
    fetch = +refs/heads/*:refs/remotes/origin/*

此处我把url = git@code.aliyun.com:23165-Sunrise,改为 url = git@sunrise:23165-Sunrise

  • 如果线上git项目不在本地,请直接输入:
$ git clone git@sunrise:23165-Sunrise  (你账号项目 ssh 地址)

总结

其中关键点 就是 .ssh/config 配置的使用,Host 别名 等同于 git 服务平台域名。现在可以试试多个git账号,一台电脑使用!有不懂地方可以联系我。