发现每次换完电脑之后都要搜下怎么配置多个ssh-key,虽然也有收藏相关的文章,可是容易忘记之前收藏到哪里去了,所以决定把这一系列过程记录下来,下次再有需要就可以直接看了~

生成SSH-KEY

公司用:ssh-keygen -t rsa -b 4096 -C "xxx@qq.com" -f ~/.ssh/gitlab_rsa

个人用:ssh-keygen -t rsa -b 4096 -C "xxx@qq.com" -f ~/.ssh/github_rsa

-t 指定生成的密钥类型,一共有dsa | ecdsa | ed25519 | rsa这四种
-b 指定生成密钥的长度,dsa密钥的长度为1024,rsa密钥默认是2048,一般来说可以不用指定
-C 指定注释内容,会出现在生成公钥的最后面,可以是任何内容,一般用邮箱
-f 指定生成的私钥的文件位置及文件名,公钥会在同一文件夹下,不知道文件名的情况下,默认生成的是id_rsa,默认是生成在 user/.ssh文件夹下复制代码

将公钥放到gitlab 或 github

复制 xx_rsa.pub 文件的内容,添加到 gitlab 或 github 个人设置中对应的ssh keys 中即可

添加配置文件

# gitlab
Host gitlab.com
    HostName gitlab.com
    User my-gitlab-name
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitlab-rsa

# github
Host github.com
    HostName github.com
    User my-github-name
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github-rsa

# 配置文件参数
# Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
# HostName : 要登录主机的主机名
# User : 登录名
# IdentityFile : 指明上面User对应的identityFile路径复制代码

测试连接

ssh -T gitlab@gitlab.com 或 ssh -T git@github.com

如果在测试连接GitHub时出现了如下报错

kex_exchange_identification: read: Connection reset by peer

需要看下是否是在公司网络下进行的操作,如果是的话,那应该是因为公司网络屏蔽了GitHub。

到最后,正常进行代码提交即可