为多个GitHub账户使用多个SSH密钥
对于大多数开发者来说,可能需要在一台电脑上运行多个GitHub账户。例如,你可以在同一台电脑上运行一个组织的GitHub账户和另一个用于个人项目的账户。
在这篇文章中,你将学习如何为不同的 GitHub 账户使用多个 SSH 密钥。在使用两个不同的 GitHub 账户时,必须使用 SSH 密钥进行设置。
前提条件
要掌握这篇文章的内容,关键是要对 GitHub 的工作原理有充分的了解。
什么是 SSH 密钥?
SSH(Secure Shell)是一种加密的网络协议,允许一台计算机通过互联网安全地与服务器连接。SSH 最好用于访问远程服务器。
SSH的设计是为了提供安全的加密,验证和计算机之间的通信。它提供了一种远程执行命令和配置服务的安全方式。
SSH技术通常使用客户-服务器模式进行。因此,你可以安全地从一个系统远程登录到另一个系统并传输文件。
客户-服务器模型是计算机网络上的一种分布式系统结构,它分为两个部分。请求服务或请求的计算机(客户)和为客户提供响应的计算机(服务器)。客户端-服务器模型是计算机通过计算机网络或互联网进行通信的一种方式。
设置SSH,你使用一对密钥--公钥和私钥。公钥是互联网上任何人都可以访问的密钥,而私钥是特定用户的。
公钥存储在SSH服务器上,而私钥则存储在你的SSH客户端上。所以基本上,SSH使用非对称加密。
非对称加密使用两个不同的密钥来加密和解密数据。一个公钥对数据进行加密,一个私钥对数据进行解密。最常见和安全的数据加密和解密方式是使用RSA算法。这种算法产生一个公共密钥和一个私人密钥,它们在逻辑上是相互关联的。
为了在你的计算机(SSH客户端)和网络服务器(SSH服务器)之间建立连接,SSH服务器使用公钥对信息进行加密并将其发送给客户端。然后,客户端用私钥对信息进行解密,并将其发回给SSH服务器。一旦验证完成,就会建立连接。
为什么要在 Git 和 Github 上使用 SSH 密钥?
在使用GitHub账户时,你要用你的用户名和密码向GitHub表明你的身份。另一方面,SSH 密钥是识别 GitHub 账户的另一种方式。
如前所述,SSH 密钥有成对的公钥和私钥。公钥是与 Git 和 GitHub 服务共享的,私钥则保存在你的电脑上。如果密钥匹配,你就可以获得访问权。SSH 密钥背后的加密技术确保没有人能够从公钥中解密你的私钥。
在 GitHub 账户上添加 2FA 与使用 SSH 密钥的区别
双因素认证(2FA)是登录应用程序时使用的一种安全技术。使用2FA,你可以使用一个用户名和密码来登录,并提供另一种形式的认证。
在GitHub账户上添加2FA,可以让GitHub在用户试图登录时随时生成一个认证码。另一方面,SSH密钥授予任何使用它登录服务器的用户以访问权。因此,它同时提供了客户端和服务器的认证。这是通过公钥和私钥实现的。
如何管理 GitHub 账户的 SSH 密钥
生成 SSH 密钥
在生成 SSH 密钥之前,请确保你有两个不同的 GitHub 账户。你的账户和你公司的 GitHub 账户。
你可以使用你的命令提示符或Git bash来运行这些命令。导航到目录,为每个GitHub账户运行下面的命令。
# navigating to the ssh directory, run the following command.
cd .ssh/
# Generate SSH key for each GitHub account
ssh-keygen -t rsa -C "your_name@email.com"
ssh-keygen -t rsa -C "your_name@organization_email.com"
密钥生成器会提示你输入一个文件名。
输入一个独特的名字,比如。
id_rsa_personal
id_rsa_work


现在,你已经创建了两个不同的密钥,列在下面。
id_rsa_personal
id_rsa_work
生成密钥后,使用以下命令检查是否创建了所有密钥。
ls ~/.ssh
下面的文件列表就会出现。

为你的 GitHub 账户添加一个新的 SSH 密钥
现在我们有了SSH密钥,让我们把它们与Github账户联系起来。
要获得SSH密钥,请执行此命令。
cat id_rsa_personal.pub

复制SSH密钥,然后登录到GitHub账户。
按照下面的步骤为你的GitHub账户添加SSH密钥。
- 在你的 GitHub 上,导航到
Settings。 - 选择
SSH and GPG keys- Gnu Privacy Guard (GPG) 是一种加密技术,允许各方安全共享信息。 - 点击
New SSH Key按钮,给它一个重要的Title并粘贴Key。 - 最后,点击
Add SSH key按钮。

创建和更新SSH配置文件
接下来,让我们把这一切汇集到一个配置文件中。有两个 GitHub 账户 - 个人账户和工作账户。个人账户是本地账户,而工作账户是全局账户。
通过运行这个命令可以访问 SSH 配置文件。
~/.ssh/config
如果它存在,你可以编辑它,否则可以用这个命令创建它。
touch config
nano config
通过添加以下规则更新配置文件。
# Personal account, - the default config
Host github.com-personal github account
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
# Work account
Host github.com-organization github account
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work

在上面的代码中,我们有两个不同的值。一个是工作资源库,另一个是用户的资源库。这些值可以让你添加和更新 GitHub 仓库的 SSH 配置。
克隆存储库
接下来,我们要克隆仓库。克隆时,确保使用我们在 SSH 配置时使用的主机名。
要克隆仓库,执行下面的克隆命令。
克隆个人版本库
要克隆你的私人项目,我们可以使用这个命令。
git clone git@github.com:your-github-account/private-project-repo.git
这里,your-github-account 将是账户的用户名,private-project-repo 将是个人项目的版本库的名称。
克隆工作资源库
当克隆你公司的项目时,我们将使用这个命令。
git clone git@github.myorganization.com:org-account/company-project-repo.git
这里,your-github-account 将是账户的用户名,company-project-repo 将是公司项目的版本库的名称。
结语
最后,我们学会了如何使用多个 SSH 密钥,同时访问多个 GitHub 账户。
总结一下。
- 读者已经了解了什么是 SSH 密钥以及它们是如何工作的。
- 读者学会了如何在多个 GitHub 账户上管理多个 SSH 密钥。
- 读者学会了如何创建和更新 SSH 配置文件。
- 最后,读者学会了如何克隆存储库。