如何為 GitHub 生成 SSH 密鑰

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-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 右上角面板顯示不同部分,箭頭指向設置部分。GitHub 設置。
  3. 然後,在配置文件中,單擊 SSH 和 GPG 密鑰。配置文件設置面板顯示 SSH 和 GPG 密鑰選項。SSH 和 GPG 密鑰。
  4. 單擊新建 SSH 密鑰按鈕。SSH 密鑰部分帶有指向新建 SSH 密鑰按鈕的箭頭。新的 SSH 密鑰按鈕。
  5. 在 GitHub 上為您的新 SSH 密鑰命名 – 通常是您將使用該密鑰的設備。然後將密鑰粘貼到密鑰區域。使用欄位添加新的 SSH 密鑰表單添加新的 SSH 密鑰表單。
  6. 添加您的 SSH 密鑰。添加 SSH 密鑰按鈕。添加 SSH 密鑰按鈕。

使用回購推送測試 SSH 連接

是時候測試你迄今為止所做的一切了。您將使用 SSH 更改、提交和推送到現有存儲庫之一,以確保您的連接設置正確。

所有 Kinsta 託管計劃都包括來自我們資深 WordPress 開發人員和工程師的 24/7 支持。與支持我們財富 500 強客戶的同一團隊聊天。看看我們的計劃!

對於我們的示例,我們將修改我們在 Git for Web Development 教程中創建的簡單 HTML 站點。

首先,我們需要將存儲庫克隆到我們的本地機器中。我們可以到 GitHub 上的 repo 頁面,複製它提供的 SSH 地址。

顯示 SSH 克隆命令的 GitHub 頁面。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 網站簡單的 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 天退款保證的計劃中。查看我們的計劃或與銷售人員交談以找到適合您的計劃。

相關文章