随着github账号的日益增多,以及账号的保密性要求,使我需要创建不同的ssh key给不同的github账号,由于烦于每次都需要查指令,因此决定自拟教程一份。
本地创建ssh公钥私钥
ssh-keygen -t rsa -C "youremail@com"
指令一旦执行会要求你填入一些option,此时需要注意:
- 默认情况下,指令会为你在
~/.ssh
下创建两个文件id_rsa
以及id_rsa.pub
但是因为我需要多组公私钥,因此,如果使用默认选项会导致我的公私钥出现问题,因此我们可以选择自定义的公私钥文件名以及文件所在的位置
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa):自定义私钥文件名以及地址(例如:~/.ssh/id_haha_rsa)
Enter passphrase (empty for no passphrase): 回车
Enter same passphrase again: 回车
----result
Your identification has been saved in ~/.ssh/id_haha_rsa.
Your public key has been saved in ~/.ssh/id_haha_rsa.pub.
The key fingerprint is:
*******************
*******************
本地修改ssh config
一般会在~/.ssh有一个config文件,用来管理所有ssh的相关内容(如果没有可以自己创建)。
通过对 ~/.ssh/config 文件的配置你可以大大简化 SSH 相关的操作
举个例子
.ssh/config
Host example # 关键词
HostName example.com # 主机地址
User root # 用户名
IdentityFile ~/.ssh/id_ecdsa # 认证文件
Host github.com # 关键词
HostName github.com # 主机地址
User git # 用户名
IdentityFile ~/.ssh/id_rsa # 私钥地址
一般ssh
- 如果你直接执行:
ssh example
就等同于ssh root@example.com
,并且会默认的直接访问到IdentityFile地址找出私钥,不需要你手动输入密码
github ssh
- 如果细心留意会发现当你在git repo下执行
git remote
会出现
origin git@github.com:githubUser/repoName.git (fetch)
说明你push的时候类似于ssh登录,git是用户名,github.com是hostname,而push的时候类似于自动执行了ssh github.com
, 就会到IdentityFile指定的位置找私钥,利用这个私钥和配置在github上的公钥配对
-
那么,如何配置多个账户给github呢?
- 先配置config file
Host github-COMPANY HostName github.com User git IdentityFile ~/.ssh/id_rsa_COMPANY
- 修改repo remote
git remote add origin git(用户名)@github-COMPANY(Host):githubUser/repo.git
将公钥配置到github上
核心
- 创建不同文件名的公私钥文件
- 学会配置config文件(IdentityFile)
- 多账户需要学习修改remote的user@Host