这是我参与「第五届青训营 」伴学笔记创作活动的第 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的仓库在执行刚刚的命令一遍即可。