如何为多个GitHub账户使用多个SSH密钥

169 阅读6分钟

为多个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

Generating SSH key for my personal account

Generating SSH key for my company’s account

现在,你已经创建了两个不同的密钥,列在下面。

id_rsa_personal
id_rsa_work

生成密钥后,使用以下命令检查是否创建了所有密钥。

ls ~/.ssh

下面的文件列表就会出现。

Generating a files list

为你的 GitHub 账户添加一个新的 SSH 密钥

现在我们有了SSH密钥,让我们把它们与Github账户联系起来。

要获得SSH密钥,请执行此命令。

cat id_rsa_personal.pub

Getting SSH key

复制SSH密钥,然后登录到GitHub账户。

按照下面的步骤为你的GitHub账户添加SSH密钥。

  1. 在你的 GitHub 上,导航到Settings
  2. 选择SSH and GPG keys - Gnu Privacy Guard (GPG) 是一种加密技术,允许各方安全共享信息。
  3. 点击New SSH Key 按钮,给它一个重要的Title 并粘贴Key
  4. 最后,点击Add SSH key 按钮。

Adding SSH key to your Github account

创建和更新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

Adding a config file

在上面的代码中,我们有两个不同的值。一个是工作资源库,另一个是用户的资源库。这些值可以让你添加和更新 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 配置文件。
  • 最后,读者学会了如何克隆存储库。