配置多个 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路径
上次更新:
贡献者: iEchoxu