创建多个ssh-key

创建多个ssh-key

十二月 19, 2018

生产环境下经常需要为同一台机器配置多个ssh-key并且在访问指定服务器时使用指定的key

首先简单了解一下ssh:

Secure Shell(安全外壳协议,简称 SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。多应用在远程登录服务器,git拉取与推送,在不是用密码登录的情况下可以通过创建一对ssh私钥与ssh公钥进行免密登录以及git操作。

创建第一个ssh-key

1
2
cd ~/.ssh                                 #首先先进入ssh目录下
ssh-keygen -t rsa -C "email@gmail.com" #创建第一个ssh-key

之后会看见

1
2
3
Enter file in which to save the key (/Users/aamen/.ssh/id_rsa): test1   #给要创建的 ssh-key 命名
Enter passphrase (empty for no passphrase): #指定密码(空为不指定)
Enter same passphrase again: #重复输入密码

这就创建完成第一个ssh-key 并且在 ~/.ssh 目录下发现多了两个文件分别是 tes1 和 test1.pub

再次输入创建新的 ssh-key 并且命名为 test2

现在 ~/.ssh 目录下有4个文件 分别是 tes1 test1.pub 以及 tes2 和 test2.pub

然后执行

1
vim config

将里面内容修改为
1
2
3
4
5
6
7
Host github                          # alias名称
HostName github.com # host domain 或 ip
Port port-number # host 的 SSH port 可不填 默认22
PreferredAuthentications publickey # 强制使用 Public Key 验证
IdentitiesOnly yes # 使用指定的 key
IdentityFile ~/.ssh/test1 # 指定 pem 或 pub 的 key 路径
User username-on-remote-machine # 登录 SSH 的 username 可不填

保存并退出
1
:wq!

测试一下

1
$ ssh -T git@github.com

成功后返回
1
Hi xxx! You've successfully authenticated, but GitHub does not # provide shell access.

然后再次修改 config 并添加
1
2
3
4
5
6
7
Host gitlab                          # alias名称
HostName gitlab.com # host domain 或 ip
Port port-number # host 的 SSH port 可不填 默认22
PreferredAuthentications publickey # 强制使用 Public Key 验证
IdentitiesOnly yes # 使用指定的 key
IdentityFile ~/.ssh/test2 # 指定 pem 或 pub 的 key 路径
User username-on-remote-machine # 登录 SSH 的 username 可不填

测试一下
1
2
sh -T git@gitlab.com
Welcome to GitLab, @xxx!

大功告成~