一台电脑配置多个Git账户的问题 | 青训营笔记

106 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

1. 前言

一台电脑默认只有一个私钥 id_rsa 和公钥id_rsa.pub。当我们需要在一台电脑上操作不同的 github 账号就需要多个对应的ssh key。

2. 什么是SSH

ssh是Secure Shell的缩写,建立在应用层传输层基础上的安全协议。为了便于访问github,要生成ssh公钥,这样就不用每一次访问github都要输入用户名和密码。简单来说就是方便我们拉取推送代码。

3.生成步骤

1.检查系统是否有.ssh文件夹

windows系统下一般是在 C:\Users\Administrator 目录下,如果没有手动新建 .ssh 文件夹。

2.生成多个ssh key

.ssh文件夹下可能已经有了公钥和私钥,这时候需要重新生成,要修改名称以防覆盖掉以前的公钥私钥。

3. 将生成的 key 添加到 github 账户中去

  • 打开生成的 github_id_rsa.pub 文件,全选并复制内容;
  • 登录你的github ,点击右上角头像 —> Setttings –> SSH and GPG keys --> New SSH keys
  • Titile 随意起名, Key 中粘贴上刚刚拷贝的公钥;
  • 点击 Add SSH key ,就成功啦。

4. 打开ssh-agent添加私钥

执行ssh-add ~/.ssh/id_ras时出现:

Could not open a connection to your authentication agent

执行如下命令ssh-agent bash
然后再执行 ssh-add ~/.ssh/id_ras 即可。

其中ssh-agent bash(或eval $(ssh-agent))会启动一个进程在内存里管理这些私钥,可以把它理解成一个私钥管理中心
添加之后可以使用ssh-add -l命令查看一下是否添加成功

4. 配置 config 文件

在.ssh文件夹中手动创建config文件或者输入命令touch config生成,并按下面的模板填写,该文件用于配置私钥对应的服务器。

# gitlab
Host gitlab.ylwnl.com   
HostName gitlab.xxx.com   
PreferredAuthentications publickey  
IdentityFile ~/.ssh/gitlab_id_rsa 

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

配置说明:

  • Host:自定义别名,会影响git相关命令
  • HostName:真实的服务器地址(域名)
  • User:之前配置的用户名可以省略(xxx@xxx.com
  • PreferredAuthentications:权限认证(publickey,password publickey,keyboard-interactive)一般直接设为publickey
  • IdentityFile:rsa文件地址

4. 测试

配置好后使用ssh -T git@github.com

没有成功使用:ssh -vT git@github.com

如果之前有设置全局用户名和邮箱的话需要unset一下

git config --global --unset user.email
git config --global --unset user.name

然后在不同的仓库下设置局部的用户名和邮箱

比如在公司的repository下

git config user.name "yourname"  
git config user.email "youremail"

在自己的github的仓库在执行刚刚的命令一遍即可。