Mac管理多个SSH KEY

前言

重新搭建了gitlab服务器来管理代码。再加上自己的GitHub托管平台,码云托管平台,每个平台都需要 SSH KEY 来登陆。这些平台都使用同一个公钥(id_rsa/id_rsa.pub 默认生成的 私/公钥)是否可以?答案肯定是可以的,但是有很多弊端,这里我就不说了。
添加、配置、管理多个公/私钥。总有一些坑要踩过,所以写个文档记录下需要注意的地方和踩过的坑。原文连接

添加多个 ssh key

1、新添加 ssh key

//为了保证后面只需要输入名字首先切换到本机ssh目录
cd ~/.ssh
//创建ssh-key
ssh-keygen -t rsa -C  "yourname@email.com"
//为新生成的秘钥命名,由于已经在ssh目录下了,所以只需输入文件名
Enter file in which to save the key (/Users/admin/.ssh/id_rsa):id_ras_github

同样的方式根据不同的平台生成三个秘钥对,目录(~/.ssh)最后的结果如下:

//自己的 gitlab 
id_rsa_yiliao
id_rsa_yiliao.pub
//码云 gitee.com
id_rsa_mayun
id_rsa_mayun.pub
//GitHub github.com
id_rsa_github
id_rsa_github.pub

2、设置ssh key的代理

  • 1、首先查看代理
ssh-add -l 

若提示

Could not open a connection to your authentication agent.

则系统代理里没有任何key,执行如下操作

exec ssh-agent bash 

若系统已经有ssh-key 代理 ,可以删除

ssh-add -D
  • 2、代理中添加私钥
    默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中:
ssh-add ~/.ssh/id_rsa_yiliao 
ssh-add ~/.ssh/id_rsa_mayun
ssh-add ~/.ssh/id_rsa_github 
ssh-add -l
2048 SHA256:ojXu/V77OR1muXEWtMJ0BLw3VQ7UVIfCkoKmZnIoa30 /Users/admin/.ssh/id_rsa_yiliao (RSA)
2048 SHA256:1XZBkfKzSc+WgXpqzPw2nuaVBMuIaFamdt+9i7HSOtE /Users/admin/.ssh/id_rsa_github (RSA)
2048 SHA256:uk0N6t4zmwFLf3ySBTBKYMzF9qD42ZxLGzGU8UrXBRY /Users/admin/.ssh/id_rsa_mayun (RSA)
  • 3、编辑配置文件config
touch ~/.ssh/config  
//或者
vim ~/.ssh/config  

添加内容

# yiliao
Host yiliao.com
HostName yiliao.com
IdentityFile ~/.ssh/id_rsa_yiliao
user git

# github
Host github
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
user git

# mayun
Host mayun
HostName gitee.com
IdentityFile ~/.ssh/id_rsa_mayun
user git

这里说明一下每个字段的意思:

# 服务器1
Host     别名(方便记忆)
HostName IP地址或者域名(可以写假域名,但要在host文件中绑定ip地址)
Port     默认是22可以不写,如果自己搭建的服务器监听的是其他端口这个参数必须声明
IdentityFile  私钥文件路径
User     用户名一般写git就行
  • 4、添加公钥
    这里以GitHub为例,其他平台添加流程基本一样。
    通过cat命令查看公钥内容,并复制全部内容(从ssh-rsa开始复制到最后邮箱结束,全部复制)
cat ~/.ssh/id_rsa_github.pub

添加步骤如下:


找到设置.png

New SSH key.png

image.png
  • 5、测试
    测试是否可以SSH连接服务器一下几种方式都可以:
ssh -T git@github.com (域名)
ssh -T git@config文件中的别名 
ssh -T git@ip地址

这时候,如果提示:

admin ~/Desktop: ssh -T git@github.com
The authenticity of host 'github.com (13.229.188.59)' can't be established.
ECDSA key fingerprint is SHA256:XkVfJu/1xvcPAHO4FLkTSZovag9e0isE3bBxu19bYtY.
Are you sure you want to continue connecting (yes/no)?
那么输入yes,然后回车。(因为第一次访问时known_hosts中没有记录,输入yes回车下次就不会提示了,并保存到known_hosts中)
ssh -T git@xxx 这里的xxx是在config文件中的Host。找出SSH对应的host。HostName就是git托管的平台url。

若出现

Hi XXX! You've successfully authenticated, but GitHub does not provide shell access. 

则表示成功。若出现

permission denied (publickey) 

请检查github的ssh管理里添加的公钥是否正确。

  • 6、修改host
    如果没有域名,域名到期时只能通过ip地址去访问git服务器,这个时候为了保证 ~/.ssh/config文件的一致性,可以设置host文件。
vim /etc/hosts

添加 ip地址 域名

//添加ip地址(这里是假的ip地址)      域名
13.229.188.59   yiliao.com
13.229.188.59   gitee.com
13.229.188.59   github.com

原文连接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容