配置多个 ssh key
实际工作中需要用到多个 ssh-key,本文将详细介绍 ssh-key 生成与部署。
开始
现在我需要把 hexo 发布到 github、gcoding、vps,所以需要配置三个 sshkey
分别是 coding、github、vps,下面的操作都是在本机上执行.
ssh-keygen -t rsa -b 4096 -C "myjerrysuu@163.com" -f ~/.ssh/id_rsa_coding
ssh-keygen -t rsa -b 4096 -C "myjerrysuu@163.com" -f ~/.ssh/id_rsa_github
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_vpsgit
输入完命令后可以直接回车。
然后会在~/.ssh
目录下生成 6 个文件,分别是
id_rsa_coding id_rsa_coding.pub
id_rsa_github id_rsa_github.pub
id_rsa_vpsgit id_rsa_vpsgit.pub
切记
密钥是一对的,其中.pub
结尾的是公钥,是要放置到 github、coding、vps 等服务器上的
私钥需要保存在本地,私钥一定要好好保存.
git 全局设置
git config –global user.email “myjerrysuu@163.com“
git config –global user.name “xujh”
上面的操作是告诉 git 是谁执行的操作.
下面的命令查看当前的 user.name 和 user.email 值
git config user.name
git config user.email
将~/.ssh
下的私钥添加到ssh-agent
ssh-add ~/.ssh/id_rsa_coding
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_vpsgit
ssh-add -l
查看已经有的 ssh-key
ssh-add -D
删除所有 ssh-key
ssh-add 参数:
- -D:删除 ssh-agent 中的所有密钥.
- -d:从 ssh-agent 中的删除密钥
- -e pkcs11:删除 PKCS#11 共享库 pkcs1 提供的钥匙。
- -s pkcs11:添加 PKCS#11 共享库 pkcs1 提供的钥匙。
- -L:显示 ssh-agent 中的公钥
- -l:显示 ssh-agent 中的密钥
- -t life:对加载的密钥设置超时时间,超时 ssh-agent 将自动卸载密钥
- -X:对 ssh-agent 进行解锁
- -x:对 ssh-agent 进行加锁
如果在 zsh 中执行ssh-add
报错Could not open a connection to your authentication agent
;
则需要将eval "$(ssh-agent -s)"
写到~/.zshrc
文件末尾,并执行source ~/.zshrc
,然后在执行ssh-add
命令.
ssh-add 这个命令不是用来永久性的记住你所使用的私钥的。
实际上,它的作用只是把你指定的私钥添加到 ssh-agent 所管理的一个 session 当中。
而 ssh-agent 是一个用于存储私钥的临时性的 session 服务,也就是说当你重启之后,ssh-agent 服务也就重置了
在 zsh 中永久使用 ssh-add
vim ~/.zshrc
在其末尾添加
eval "$(ssh-agent -s)" 2>/dev/null
ssh-add ~/.ssh/id_rsa_coding 2>/dev/null
ssh-add ~/.ssh/id_rsa_github 2>/dev/null
ssh-add ~/.ssh/id_rsa_vpsgit 2>/dev/null
ssh-add ~/.ssh/id_rsa_pi 2>/dev/null
2
3
4
5
source ~/.zshrc
创建 ssh config 文件
git 会先从ssh-agent
查找,如果ssh-agent
中没有就会在~/.ssh/config
中查找
vim ~/.ssh/config
添加内容如下:
# coding
Host coding.net
HostName coding.net
PreferredAuthentications publickey
User myjerrysuu@163.com
IdentityFile ~/.ssh/id_rsa_coding
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
User myjerrysuu@163.com
IdentityFile ~/.ssh/id_rsa_github
# raspyPi
Host raspyPi
HostName raspyPi
PreferredAuthentications publickey
User pi
IdentityFile ~/.ssh/id_rsa_pi
# vagrant1
Host 192.168.1.19
HostName 192.168.1.19
PreferredAuthentications publickey
User echoxu
Port 10222
IdentityFile ~/.ssh/id_rsa_vagrant
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
配置文件参数
- Host : Host 可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和 ssh 文件
- HostName : 要登录主机的主机名
- User : 登录名
- IdentityFile : 指明上面 User 对应的 identityFile 路径