配置多个 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
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
# vpsgit
Host blog.xujianhui.cn
HostName blog.xujianhui.cn
PreferredAuthentications publickey
User git
IdentityFile ~/.ssh/id_rsa_vpsgit
# 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
配置文件参数
- Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
- HostName : 要登录主机的主机名
- User : 登录名
- IdentityFile : 指明上面User对应的identityFile路径