配置多个ssh公钥

861 阅读3分钟

目标:生成多个公钥私钥,例如gitee平台单独生成一个,github平台单独生成一个。这样相互不影响,想关掉哪个可以直接删掉。

步骤1:生成公钥到指定位置

ssh-keygen -t rsa -C '备注,可以为邮箱' -f ~/.ssh/gitee_id_rsa

#执行结果

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/xx/.ssh/gitee_id_rsa
Your public key has been saved in /Users/xx/.ssh/gitee_id_rsa.pub
The key fingerprint is:
SHA256:x+Qv6pFD/B4MTZ6ecmgEF1xxsxsfooooooooooo test@126.com
The key's randomart image is:
+---[RSA 3072]----+
|      E +o+.++o==|
|     . . * . ..=B|
|      o = o  .. *|
|       B B .  ...|
|      o S B    . |
|       o O o     |
|        B O .    |
|       . B o     |
|       .o .      |
+----[SHA256]-----+

可以看到文件夹下多了gitee_id_rsa、gitee_id_rsa.pub两个文件

ssh-keygen的命令语法

-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型

cd ~/.ssh

添加config配置

在.ssh目录下创建config文件touch config,编辑文件 vim config,添加配置

Host git@gitee.com
HostName gitee.com
User yourusername
IdentityFile ~/.ssh/gitee_git_rsa

config配置说明:

  • Host:自定义别名,会影响git相关命令
  • HostName:真实的服务器地址(域名)
  • User:之前配置的用户名可以省略(xxx@xxx.com
  • PreferredAuthentications:权限认证(publickey,password publickey,keyboard-interactive)一般直接设为publickey
  • IdentityFile:rsa文件地址

ssh-add添加高速缓存中

ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在/usr/bin/ssh-add

# 执行添加才能生效
ssh-add ~/.ssh/gitee_id_rsa
# 执行结果显示已经有了
Identity added: /Users/joyan/.ssh/gitee_id_rsa (test@126.com)
# 执行查看确认
ssh-add -l
# 结果如下表示成功
3072 SHA256:x+Qv6pFD/B4MTZ6ecmgExxxxxxxxx test@126.com (RSA)

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进行加锁

ssh-add命令

1、把专用密钥添加到 ssh-agent 的高速缓存中:

ssh-add ~/.ssh/id_dsa

2、从ssh-agent中删除密钥:

ssh-add -d ~/.ssh/id_xxx.pub

3、查看ssh-agent中的密钥:

ssh-add -l

生成公钥到指定位置

查看并复制gitee_id_rsa.pub文件内容到gitee网站配置ssh公钥的地方

cat ~/.ssh/gitee_id_rsa.pub

配置对应git网站的ssh公钥

image.png

image.png

测试命令

执行ssh -T git@gitee.com结果如图就大工告成了。

joyan@Joyanceh .ssh % ssh -T git@gitee.com
Hi  successfully authenticated, but GITEE.COM does not provide shell access.

image.png