Git配置单个或多个SSH

1,107 阅读2分钟

前言

今天在用公司电脑,想着为自己的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

  1. 命令行复制 cat ~/.ssh/ssh文件名 | clip

  2. 编辑工具直接打开 .pub文件复制

  3. 到相应的平台的SSH-Key当中添加密钥

  4. 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