前言
今天在用公司电脑,想着为自己的github个人仓库配置一下ssh key,但是因为公司电脑已经配置了ssh key,连接公司的gitlab地址。所以就针对多个git地址,如github、gitlab,在复习了一波如何同时配置多个ssh key,
添加单个ssh-key
以下的操作都是在
GitBash当中进行的
生成SSH-Key
SSH 密钥默认保留在
~/.ssh目录中。如果没有~/.ssh目录,ssh-keygen命令会使用正确的权限创建一个。
ssh-keygen -t ed25519 -C "email@example.com" -f ~/.ssh/gitlab_id_rsa
ssh-keygen -o -t rsa -b 4096 -C "email@example.com" -f ~/.ssh/gitlab_id_rsa
-t 指定要创建的密钥类型。可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2) ;可以不添加默认指定的是rsa
-b 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)
-C 提供一个新注释 这里需要填写你注册的github 或者 gitlab 邮箱号
-f 指定密钥文件名。 当你不填写文件名的时候 则默认为 id_rsa
输入上面的命令则会为你生成一个密钥,密钥生成的目录是在用户下面的.ssh文件里面,其中id_rsa.pub为公钥,id_rsa为私钥
添加ssh-key
-
命令行复制
cat ~/.ssh/ssh文件名 | clip -
编辑工具直接打开
.pub文件复制 -
到相应的平台的
SSH-Key当中添加密钥 -
以
github为例子
测试一下
ssh -T git@github.com
输入上述命令,若出现以下所示,则表示成功了,需要注意一下的是,当你配的是gitlab密钥的时候,则需要在git@后面输入Gitlab所在ip地址或域名,才能正确测试。
多密钥配置
多密钥配置的时候,则需要在生成密钥的时候,配置不同的文件名去区分,例如
ssh-keygen -t ed25519 -C "email@example.com" -f ~/.ssh/gitlab_id_rsa_1
ssh-keygen -t ed25519 -C "email@example.com" -f ~/.ssh/github_id_rsa_2
然后在./ssh/文件夹下手动config文件,配置密钥信息。不进行config的配置的话,会导致连接GitHub时还会使用默认的密钥,导致拒绝连接
config配置
# gitlab
Host gitlab.com
HostName gitlab.com
User root
IdentityFile ~/.ssh/id_rsa
# github
Host github.com
HostName github.com
User root
IdentityFile ~/.ssh/id_rsa_github
Host 代表 关键词
HostName 代表 主机地址
User 代表 用户名
IdentityFile 代表 认证文件
错误提示
进行测试的时候可能会出现以下错误
那么连接的时候指定自己重命名的私钥名就好了
ssh -T -i git_test git@github.com