1. 程式人生 > >如何配置 SSH 密鑰連接 Git 倉庫

如何配置 SSH 密鑰連接 Git 倉庫

assets 管理員 -c png code 用戶 aaa key pair 標簽

關於SSH

SSH 是 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;是建立在應用層基礎上的安全協議。

SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。

現在大多數 Git 托管平臺除了使用 HTTPS 協議連接用戶外,還會選擇更加安全的 SSH 協議來進行 Git 服務器與用戶之間來進行授權。

檢查現有的SSH

為了向 Git 服務器提供 SSH 公鑰,用戶需要有自己的公鑰,如果用戶尚未擁有密鑰,必須事先生成一份。 這個過程在所有操作系統上都是相似的。首先,你需要確認自己是否已經擁有密鑰。

在正式開始之前,建議 Windows 用戶使用 Git 程序包自帶的 git bash 命令行工具進行操作。

進入 .ssh 目錄並列出其中內容,你便可以快速確認自己是否已擁有密鑰:

# Linux
$ cd ~/ .ssh
$ ls
> id_rsa  id_rsa.pub  known_hosts

# Windows
$ cd C:/Users/Administrator/.ssh
$ ls
> id_rsa  id_rsa.pub  known_hosts

關鍵是看有沒有用 something 和 something.pub 來命名的一對文件,這個 something 通常就是 id_dsa 或 id_rsa。有 .pub 後綴的文件就是公鑰,另一個文件則是密鑰。

生成新的SSH密鑰

假如沒有這些文件,或者幹脆連 .ssh 目錄都沒有,這個時候你就需要用 ssh-keygen 來進行創建。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory ‘/home/schacon/.ssh‘.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 [email protected]

鍵入命令回車後, ssh-keygen 首先會向你確認密鑰的存儲位置。然後它會要求你輸入兩次密鑰口令。如果你不想在使用密鑰時輸入口令,將其留空即可。

Linux 的默認為~/.ssh 目錄下

Windows 用戶默認的在 C:\Users\Administrator\.ssh 目錄下

現在,進行完上述操作的用戶就可以將各自的公鑰配置到 Git 倉庫;或者發送給你的 Git 服務器管理員。

通常你只需要復制 .pub 文件的內容用於配置,或者發郵件給管理員。

# Linux
$ cat ~/.ssh/id_rsa.pub
> ssh-rsa AAAAB3NzaC1yc2... == Your Email Address

# Windows
$ cd C:/Users/Administrator/.ssh
$ cat id_rsa.pub
> ssh-rsa AAAAB3NzaC1yc2... == Your Email Address

添加SSH密鑰

完成上述操作拿到你的密鑰之後,你就可以將你的 SSH 密鑰添加到你的 Git 倉庫。

下邊分別以 GitHub 和 CODING 為示例簡單介紹一下如何添加 SSH 公鑰。

SSH 密鑰分為賬戶密鑰和項目密鑰,分別用於連接整個賬戶和連接單個項目。兩者的設置是相似的,以下僅對賬戶 SSH 密鑰進行說明。

註:示例圖片來自各平臺線上幫助文檔。

GitHub平臺:

  1. 復制已經生成的 SSH 密鑰。
    1. 如果您的SSH密鑰文件的名稱與示例代碼不同,請修改文件名以匹配當前設置。
    2. 復制密鑰時,請勿添加任何換行符或空格。
  2. 登錄到你的 GitHub 賬號,在任意頁面的右上角,點擊你的賬戶頭像,然後單擊“設置”。

    技術分享圖片

  3. 在用戶設置側欄中,單擊SSH和GPG密鑰。

    技術分享圖片

  4. 單擊“新建SSH密鑰”或“添加SSH密鑰”。

    技術分享圖片

  5. 在“標題”字段中,為新密鑰添加描述性標簽。
  6. 將密鑰粘貼到“密鑰”字段中。

    技術分享圖片

  7. 單擊“添加SSH密鑰”。

    技術分享圖片

  8. 根據提示,確認您的GitHub密碼。

    技術分享圖片

CODING平臺:

  1. 復制已經生成的 SSH 密鑰。
    1. 如果您的 SSH 密鑰文件的名稱與示例代碼不同,請修改文件名以匹配當前設置。
    2. 復制密鑰時,請勿添加任何換行符或空格。
  2. 登錄到你的 CODING 賬號,在頁面的右上角,點擊你的賬戶頭像,然後單擊“個人設置”。
  3. 在用戶設置側欄中,單擊 SSH 公鑰。
  4. 單擊右上角的“新增公鑰”。

    技術分享圖片

  5. 將第一步中復制的內容填寫到「公鑰內容」一欄,公鑰名稱可隨意填寫。
  6. 設定公鑰有效期,可選擇具體日期或設置永久有效。

    技術分享圖片

  7. 單擊添加,根據提示,確認您的 CODINNG 密碼。

測試SSH鏈接

完成 SSH 密鑰添加後後,你可以對你的連接進行測試,同時建立與 Git 倉庫的身份認證。

# GitHub
$ ssh -T [email protected]

# CODING
$ ssh -T [email protected]

在驗證的過程中系統可能提示你:無法建立主機 github.com / coding.net(IP ADDRESS)的真實性

像這樣的:

The authenticity of host github.com (IP ADDRESS) can not be established.
RSA key fingerprint is 16:27:ac...
Are you sure you want to continue connecting (yes/no)?

或者這樣的:

The authenticity of host github.com (IP ADDRESS) can not be established.
RSA key fingerprint is SHA256:nThbg6k...
Are you sure you want to continue connecting (yes/no)?

這個時候,你只需要驗證您看到的消息中的 RSA 密鑰指紋是否與 生成新的 SSH 密鑰 中的 RSA 密鑰指紋匹配,然後鍵入yes即可:

# GitHub
Hi yourname! You hove successfully authenticated.

# CODING
Hello yourname! You hove connected to Coding.net by SSH successfully!

當驗證生成的消息返回並包含您的用戶名,就說明 SSH 公鑰設置成功。

如何配置 SSH 密鑰連接 Git 倉庫