Git 和 GitHub 是每个开发人员必不可少的工具。它们被广泛用于几乎所有类型的软件开发项目。

使用 Kinsta 的高级 WordPress 托管,晚上睡得更好

查看计划

还有其他 Git 托管服务,例如 Gitlab 和 Bitbucket,但 GitHub 是开发人员最受欢迎的选择。您甚至可以编辑您的个人资料,使其对招聘人员更具吸引力。

您可以使用 Git 和 GitHub 来组织您的项目,与其他开发人员协作,当然还有在 Kinsta。

但是由于 Git 和 GitHub 是相关但不同的工具,因此您需要不断地使用它们更新您的工作流程。

我们建议为您的每台机器使用 SSH 密钥。因此,在本教程中,您将了解它们是什么、它们的一些优点以及如何生成和配置 GitHub SSH 密钥。

让我们开始吧!

什么是 SSH 密钥?

简而言之,SSH 密钥是用于 SSH(安全外壳)协议的凭据,用于通过 Internet 对远程计算机进行安全访问。通常,该身份验证发生在命令行环境中。

该协议基于客户端-服务器架构,这意味着您作为用户(或“客户端”)需要使用称为 SSH 客户端的特殊软件登录远程服务器并执行命令。这基本上就是您在通过终端对 GitHub 进行身份验证时所做的事情。

吉特推送。

但 SSH 不仅仅用于 GitHub。Kinsta、谷歌云和亚马逊网络服务等其他平台广泛使用它来创建安全通道来访问他们的服务。

现在,进入 SSH 密钥的真正工作原理,您需要了解公钥和私钥之间的区别。

公钥与私钥

让我们从基础开始。

SSH 协议使用一种称为非对称加密的加密技术。这个词听起来可能很复杂和奇怪,但事实并非如此。

基本上,非对称加密是一个使用一对密钥的系统,即公钥和私钥。

正如您可能猜到的那样,公钥可以与任何人共享。其主要目的是加密数据,将消息转换为密码或密文。此密钥通常会发送到其他系统(例如服务器)以在通过 Internet 发送数据之前对其进行加密。

另一方面,私钥是您必须自己保管的。它用于使用您的公钥解密加密数据。没有它,就不可能解码您的加密信息。

此方法允许您和服务器保持安全的通信通道来传输信息。

当您通过 SSH 连接到服务器时,后台会发生以下情况:

  1. 客户端将公钥发送到服务器。
  2. 服务器要求客户端使用私钥对使用公钥加密的随机消息进行签名。
  3. 客户端签署消息并将结果转发给服务器。
  4. 客户端和服务器之间建立了安全连接。

确保您的私钥安全并在任何情况下都不要与任何人共享,这一点很重要。它们实际上是发送给您的所有信息的关键。

在 GitHub 上使用 SSH 密钥

自 2021 年 8 月 13 日起,Github 不再接受命令行访问的密码验证。这意味着现在您需要通过个人访问令牌进行身份验证或使用 SSH 密钥(更方便一点)。

当您尝试在终端中通过 HTTP 使用 GitHub 密码进行身份验证时,会发生以下情况:

‘https://github.com’ 的用户名:你的用户名

‘https://[email protected]’ 的密码:

remote:对密码身份验证的支持已于 2021 年 8 月 13 日移除。请改用个人访问令牌。

远程:请参阅 https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ 了解更多信息。

致命:“https://github.com/yourusername/repository.git/”的身份验证失败

GitHub 需要您的公钥来授权您通过 SSH 编辑您的任何存储库。

让我们看看如何在本地生成 SSH 密钥。

如何在本地生成 SSH 密钥

现在您对 SSH 协议以及公钥和私钥之间的区别有了一些了解,是时候在您的机器和 GitHub 存储库之间设置安全的 SSH 通道了。

在我们继续之前,您应该已经有一个 GitHub 帐户,以及在您的系统中安装了 Git 的终端/命令提示符。如果您运行的是 Windows,请确保您安装了 Git bash,它内置了本教程所需的所有工具。

OpenSSH 客户端是用于通过 SSH 连接的最流行的开源软件。您无需担心您的操作系统,因为它默认安装在 Linux、macOS 和 Windows 10 上。

您需要在 Windows 上启动命令提示符或在基于 Unix 的系统上启动终端来生成本地 SSH 密钥。通常,您可以通过在应用程序面板中搜索“终端”、“cmd”或“powershell”,然后单击显示的图标来执行此操作。

终端应用程序搜索。

信息

如果您使用 Linux,大多数发行版都有快捷键 Ctrl + Alt + T 打开终端。

完成此操作后,您应该有一个类似于下图的窗口。

终端应用。

运行以下命令以生成本地 SSH 密钥对:

ssh-keygen -t ed25519 -C “[电子邮件保护]”

是时候告诉你一个秘密了:没有人能真正记住这个命令!大多数开发人员每次都必须使用 Google 搜索,因为:

  1. 这是一个非常长的命令,带有容易忘记的、看似随机的数字。
  2. 我们很少使用它,所以大部分时间都不值得把它记在内存中。

但是,了解我们引入终端的每个命令很重要,所以让我们看看这个命令的每个部分的含义。

订阅时事通讯

想知道我们是如何将流量提高到 1000% 以上的吗?

加入 20,000 多人的行列,他们会通过 WordPress 内幕技巧获得我们的每周时事通讯!

现在订阅

  • ssh-keygen:用于创建一对新的 SSH 密钥的命令行工具。您可以使用 ssh-keygen 帮助查看其标志
  • -t ed25519:-t 标志用于指示用于创建密钥对数字签名的算法。如果您的系统支持,ed25519 是您可以用来创建 SSH 密钥对的最佳算法。
  • -C “email”:-c 标志用于在公钥末尾提供自定义注释,通常是密钥对创建者的电子邮件或标识。

在终端中输入命令后,您必须输入要保存密钥的文件。默认情况下,它位于您的主目录中,位于名为“.ssh”的隐藏文件夹中,但您可以将其更改为您喜欢的任何内容。

然后,系统会要求您输入密码以添加到您的密钥对中。如果您的设备在任何时候受到威胁,这会增加额外的安全层。添加密码不是强制性的,但始终建议您这样做。

整个过程是这样的:

ssh-keygen 命令。

如您所见,此命令在您选择的目录(通常为 ~/.ssh)中生成两个文件:带有 .pub 扩展名的公钥和不带扩展名的私钥。

稍后我们将向您展示如何将公钥添加到您的 GitHub 帐户。

将 SSH 密钥添加到 ssh-agent

ssh-agent 程序在后台运行,安全地保存您的私钥和密码,并让它们随时可供 ssh 使用。这是一个很棒的实用程序,可以让您在每次想要连接到服务器时都不必输入密码。

因此,您要将新的私钥添加到此代理。就是这样:

  1. 确保 ssh-agent 在后台运行。
    eval `ssh-agent`
    # 代理 pid 334065如果您收到与此类似的消息,如果一切正常。这意味着 ssh-agent 在特定的进程 ID (PID) 下运行。
  2. 将您的 SSH 私钥(没有扩展名的私钥)添加到 ssh-agent。
    ssh-add ~/.ssh/kinsta_keys将 kinsta_keys 替换为 SSH 密钥的名称。如果这是您创建的第一个密钥,则应将其命名为“id_algorithm_used”,例如 id_ed25519。

将 SSH 密钥添加到 GitHub 帐户

最后一步是将您的公钥添加到您的 GitHub 帐户。只需按照以下说明操作:

  1. 将 SSH 公钥复制到剪贴板。您可以使用文本编辑器打开文件所在的位置并复制它,或使用终端显示其内容。
    cat ~/.ssh/kinsta_keys.pub
    # ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl3dIeudNqd0DPMRD6OIh65tjkxFNOtwGcWB2gCgPhk [电子邮件保护]
  2. 登录 GitHub ] 并转到页面的右上角,单击您的个人资料照片,然后选择设置。GitHub 设置。
  3. 然后,在配置文件中,单击 SSH 和 GPG 密钥。SSH 和 GPG 密钥。
  4. 单击新建 SSH 密钥按钮。新的 SSH 密钥按钮。
  5. 在 GitHub 上为您的新 SSH 密钥命名 – 通常是您将使用该密钥的设备。然后将密钥粘贴到密钥区域。添加新的 SSH 密钥表单。
  6. 添加您的 SSH 密钥。添加 SSH 密钥按钮。

使用回购推送测试 SSH 连接

是时候测试你迄今为止所做的一切了。您将使用 SSH 更改、提交和推送到现有存储库之一,以确保您的连接设置正确。

所有 Kinsta 托管计划都包括来自我们资深 WordPress 开发人员和工程师的 24/7 支持。与支持我们财富 500 强客户的同一团队聊天。看看我们的计划!

对于我们的示例,我们将修改我们在 Git for Web Development 教程中创建的简单 HTML 站点。

首先,我们需要将存储库克隆到我们的本地机器中。我们可以到 GitHub 上的 repo 页面,复制它提供的 SSH 地址。

SSH 克隆命令。

然后,使用终端克隆 repo:

git clone [电子邮件保护]:DaniDiazTech/HTML-site.git

现在,让我们在 index.html 文件中添加一个简单的 <h1> 标签:


<div class=”container my-2″>
<h1 class=”text-center”>一个新标题!<h1>
</div>

<div class=”container my-3″>

简单的 HTML 站点。

我们没有使用任何 JavaScript 或 CSS 来保持此编辑的简单性。但是,如果您精通 JavaScript,您可能会在 Kinsta 找到一席之地。检查成为 Kinsta 团队成员所需的编码技能。

完成此操作后,提交更改:

git commit -am “添加了一个简单的标题”

并像往常一样将它们推送到 GitHub。

git 推送

如果一切顺利,恭喜!你只需在你的机器和 GitHub 之间建立一个 SSH 连接。

管理不同 GitHub 帐户的多个 SSH 密钥

如果您有多个 GitHub 帐户(假设一个用于您的个人项目,一个用于您的工作),则很难将 SSH 用于这两个帐户。您通常需要不同的机器来对不同的 GitHub 帐户进行身份验证。

但这可以通过配置 SSH 配置文件轻松解决。

让我们开始吧。

  1. 创建另一个 SSH 密钥对,并将其添加到您的另一个 GitHub 帐户。请记住您要为其分配新密钥的文件的名称。
    ssh-keygen -t ed25519 -C “[电子邮件保护]”
  2. 创建 SSH 配置文件。配置文件告诉 ssh 程序它应该如何运行。默认情况下,配置文件可能不存在,所以在 .ssh/ 文件夹中创建它:
    touch ~/.ssh/config
  3. 修改 SSH 配置文件。打开配置文件并粘贴以下代码:
    #Your day-to-day GitHub account主机 github.com 主机名
    github.com
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly 是

    # 工作账号
    Host github-work
    HostName github.com
    IdentityFile ~/.ssh/work_key_file
    IdentitiesOnly 是

现在,每次您需要使用您的工作或辅助帐户通过 SSH 进行身份验证时,您都需要稍微调整一下 repo SSH 地址,来自:

[电子邮件保护]:workaccount / project.git

…到:

[电子邮件保护]:workaccount/project.git
摘要

恭喜——你已经学会了通过 SSH 连接到 GitHub 所需的大部分实用知识!

本教程讨论了对 SSH 协议的需求、公钥和私钥的区别、如何生成密钥、将它们添加到 GitHub,甚至为不同的 GitHub 帐户管理多个 SSH 密钥。请记住,除非您想失去对所有内容的访问权限,否则您的私钥需要保持这种状态:私有。

有了这些知识,现在您就可以使用 Git 和 GitHub 开发完美的工作流程了。继续编码!

通过以下方式节省时间、成本并最大限度地提高站点性能:

  • 来自 WordPress 托管专家的即时帮助,24/7。
  • Cloudflare 企业集成。
  • 全球受众覆盖全球 29 个数据中心。
  • 通过我们内置的应用程序性能监控进行优化。

所有这些以及更多,在一个没有长期合同、协助迁移和 30 天退款保证的计划中。查看我们的计划或与销售人员交谈以找到适合您的计划。