日常开发中,不少小伙伴可能会同时使用多个代码托管平台,像GitHub和GitLab。但每个平台都需要配置密钥才能安全连接,要是不小心管理,就容易乱套。今天这篇文章,就手把手教大家怎么通过SSH配置,实现多密钥共存,轻松管理不同平台的仓库。

一、生成专属GitHub新密钥

要在GitHub和其他平台间实现多密钥共存,第一步就是给GitHub生成一把专属密钥。这里以生成ed25519类型的密钥为例,操作步骤如下:

  1. 打开终端:在电脑上找到Git Bash或者PowerShell工具,打开它们。这两个工具能帮我们在电脑上执行一些代码指令。
  2. 执行生成密钥指令:在打开的终端里输入下面这条指令:
ssh-keygen -t ed25519 -C "your_github_email@example.com" 

这条指令的作用是,让系统按照ed25519加密类型,生成一对密钥,后面的邮箱地址就是用来标识这对密钥的,你得把它换成自己GitHub账号绑定的邮箱。
3. 设置密钥保存路径:输完上面的指令后,系统会提示你选择保存密钥的路径。默认路径可能会覆盖掉你之前为GitLab设置的密钥,所以一定要修改。比如,可以把路径改成:

C:Userschenwa2sshgithub_id_ed25519 

这里的路径是示例,你可以根据自己的实际情况进行调整,只要保证不跟其他密钥路径冲突就行。
4. 设置密钥密码(可选):接下来,系统还会让你设置一个密码。要是直接回车,那生成的密钥就没有密码,这样虽然方便,但安全性会降低。建议大家还是设置一个密码,加强密钥的安全性。

二、查看新生成的密钥

密钥生成好之后,会产生两个文件:

  1. 私钥:这是非常重要的文件,相当于一把私人钥匙,要好好保管。它的路径就是刚才设置的保存路径,比如:
C:Userschenwa2sshgithub_id_ed25519 
  1. 公钥:公钥可以理解为是一把公开的钥匙,用于和远程服务器进行通信验证。它的路径和私钥类似,只是文件名多了个.pub后缀,像这样:
C:Userschenwa2sshgithub_id_ed25519.pub 

三、把新公钥添加到GitHub

生成的公钥需要添加到GitHub平台上,这样GitHub才能识别你,允许你访问仓库。具体操作如下:

  1. 复制公钥内容:在终端里输入这条指令,就能查看并复制公钥的内容:
cat C:Userschenwa2sshgithub_id_ed25519.pub 

公钥内容一般是以ssh-ed25519 AAA...开头的一长串字符,一定要完整复制。
2. 添加公钥到GitHub
– 登录自己的GitHub账号。
– 点击右上角头像,选择“Settings”。
– 在左侧菜单里找到“SSH and GPG keys”选项,点击它。
– 接着点击“New SSH key”按钮。
– 在“Title”栏,你可以自定义一个名字,方便自己识别,比如“My GitHub Key”。
– 在“Key”栏,粘贴刚才复制的公钥内容,最后点击“Add SSH key”按钮就大功告成啦。

四、配置SSH实现多密钥管理

为了让系统知道在访问不同平台时该用哪把密钥,我们还得配置一下SSH。在C:Userschenwa2ssh目录下,有一个没有后缀名的config文件(如果没有就新建一个),可以用VS Code或者Notepad++这样的工具打开编辑,在里面添加以下内容:

# GitLab配置(使用原有密钥) Host gitlab.com HostName gitlab.com User git IdentityFile C:Userschenwa2sshid_ed25519 IdentitiesOnly yes # GitHub配置(使用新密钥) Host github.com HostName github.com User git IdentityFile C:Userschenwa2sshgithub_id_ed25519 IdentitiesOnly yes 

这段配置的意思是,当我们访问GitLab时,系统会使用C:Userschenwa2sshid_ed25519这把密钥;访问GitHub时,就会使用新生成的C:Userschenwa2sshgithub_id_ed25519密钥。

五、测试GitHub连接

配置好之后,我们来检验一下是不是真的成功了。在终端输入这条指令:

ssh -T git@github.com 

如果一切正常,会出现类似Hi your_github_username! You've successfully authenticated...这样的提示,说明你已经成功连接到GitHub啦。要是没成功,就得检查一下前面的步骤是不是哪里出了问题。

六、使用新密钥克隆或关联仓库

现在,我们就可以用新密钥来操作GitHub仓库了。

  1. 克隆新仓库:如果想从GitHub上克隆一个新仓库,在终端输入下面的指令就行,记得把“用户名”和“仓库名”换成实际的:
git clone git@github.com:用户名/仓库名.git 
  1. 修改现有仓库远程地址:要是之前用HTTPS方式关联的仓库,现在想用新密钥关联,也没问题。在终端执行这条指令:
git remote set-url origin git@github.com:用户名/仓库名.git 

七、操作过程中的关键注意事项

  1. 密钥共存规则:按照前面的步骤设置好之后,GitLab会继续使用原来的id_ed25519密钥,而GitHub则使用新生成的github_id_ed25519密钥,千万不要搞混。
  2. 路径分隔符:在Windows系统下,路径的分隔符可以用双反斜杠,也可以用正斜杠。文章里的示例已经适配好了,大家操作的时候注意别写错就行。
  3. 权限问题:私钥文件非常重要,不能让别人随便读取。在Windows系统下,可以用下面这两条指令来设置权限:
icacls C:Userschenwa2sshgithub_id_ed25519 /inheritance:r icacls C:Userschenwa2sshgithub_id_ed25519 /grant:r "%USERNAME%":"R" 

这两条指令能保证只有你自己的用户账号有读取私钥文件的权限,让你的密钥更安全。

按照上面这些步骤操作下来,你就能同时安全地用旧密钥管理GitLab仓库,用新密钥管理GitHub仓库,赶紧动手试试吧!