Git 配置 SSH-Key

git

HTTPS URL 和 SSH URL

在使用 git clone 項目時,可以使用倉庫的 HTTPS URL 也可以 使用 SSH URL

  • HTTPS URL,例如:

    https://github.com/<username>/<repo name>.git
    
  • SSH URL,例如:

    [email protected]:<username>/<repo name>.git
    

這兩種方式的主要區別在於:使用 HTTPS URL 克隆時,每次 fetch 和 push 代碼都需要輸入賬號和密碼,而使用 SSH URL 在配置好 SSH Key 後,每次 fetch 和 push 代碼都不需要輸入賬號和密碼。

初次運行 Git 前的配置

Git 環境變量

Git 提供了一個叫做 git config 的工具,專門用來配置或讀取相應的工作環境變量。而正是由這些環境變量,決定了 Git 在各個環節的具體工作方式和行爲。這些變量可以存放在以下三個不同的地方:

  • /etc/gitconfig 文件:系統中對所有用戶都普遍適用的配置。若使用 git config 時用 --system 選項,讀寫的就是這個文件。
  • ~/.gitconfig 文件:用戶目錄下的配置文件只適用於該用戶。若使用 git config 時用 --global 選項,讀寫的就是這個文件。
  • 當前項目的 Git 目錄中的配置文件(也就是工作目錄中的 .git/config 文件):這裏的配置僅僅針對當前項目有效。每一個級別的配置都會覆蓋上層的相同配置,所以 .git/config 裏的配置會覆蓋 /etc/gitconfig 中的同名變量。

配置用戶信息

初次運行 Git 前需要配置用戶信息,一個是你個人的用戶名稱,一個是你的電子郵件地址。這兩條配置很重要,每次 Git 提交時都會引用這兩條信息,說明是誰提交了更新,所以會隨更新內容一起被永久納入歷史記錄:

$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]

如果用了 --global 選項,那麼更改的配置文件就是位於你用戶主目錄下的 ~/.gitconfig 文件,以後你所有的項目都會默認使用這裏配置的用戶信息。如果要在某個特定的項目中使用其他名字或者郵箱,只要去掉 --global 選項重新配置即可,新的設定保存在當前項目的 .git/config 文件裏。

查看配置信息

要檢查已有的配置信息,可以使用 git config --list 命令:

$ git config --list
user.name=Scott Chacon
user.email=[email protected]
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...

有時候會看到重複的變量名,那就說明它們來自不同的配置文件(比如 /etc/gitconfig~/.gitconfig ),不過最終 Git 實際採用的是最後一個。

也可以直接查閱某個環境變量的設定,只要把特定的環境變量名稱跟在後面即可,例如:

$ git config user.name
Scott Chacon

檢查是否已有 SSH Key

$ cd ~/.ssh

執行 lsll

$ ls
id_rsa  id_rsa.pub  known_hosts

看是否存在 id_rsa 和 id_rsa.pub 文件(或者是其它文件名),如果存在說明已有 ssh key,可以直接跳過生成密鑰,其中 id_rsa 爲私鑰,id_rsa.pub 爲公鑰。

生成 SSH key

$ ssh-keygen -t rsa -C "[email protected]"
參數 描述
-t 指定密鑰類型,默認是rsa,可以省略
-C 設置註釋文字,比如郵箱
-f 指定密鑰文件存儲文件名

以上代碼省略了 -f 參數,因此在運行上面那條命令後會讓你輸入一個文件名,用於保存剛纔生成的 SSH key,例如:

$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa): 

當然,你也可以不輸入文件名,直接回車使用默認文件名(推薦),那麼就會生成 id_rsa 和 id_rsa.pub 兩個密鑰文件。

接着又會提示你輸入兩次密碼(該密碼是你 push 文件的時候要輸入的密碼,而不是 github 管理者的密碼),當然,你也可以不輸入密碼,直接連續兩次按回車。那麼 push 的時候就不需要輸入密碼,直接提交到 github 上了,例如:

$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

連續兩次回車確認後,如下:

$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ~/.ssh/id_rsa.
Your public key has been saved in ~/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1qRb99eh19t8bqtivWkuxpNLnwKzXIg1e1u2JASyMfU [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|        ..       |
|       + ..      |
|        = oE     |
|       . * .     |
|        S B .  . |
|       o B = =. +|
|        o B.O.o.+|
|         o.@.++o=|
|          o.OBo=*|
+----[SHA256]-----+

看到以上 save 成功的提示,說明 SSH Key 已經創建成功,提示已經說明密鑰文件已保存在 ~/.ssh 文件夾下。

添加 SSH Key 到 Github

登錄 github,點擊頭像,點擊 Settings 進入設置頁面。

然後點擊菜單欄的 SSH Key 進入頁面添加 SSH Key。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-OeV785CI-1575473857166)(Git配置SSH-Key/github-ssh-keys.png)]

點擊 New SSH Key 按鈕後進行 Key 的填寫,其中 Title 隨意, Key 爲剛剛生成的公鑰,公鑰在文件 id_rsa.pub 文件中,直接 copy 文件中的內容粘貼即可。

測試 SSH key

$ ssh -T [email protected]

當執行以上代碼時,會有一段警告,如:

The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?

這是正常的,直接輸入 yes 回車既可。如果你創建 SSH key 的時候設置了密碼,接下來就會提示你輸入密碼,如:

Enter passphrase for key '~/.ssh/id_rsa':

當然如果你密碼輸錯了,會再要求你輸入,直到對了爲止。注意:輸入密碼時如果輸錯一個字符就會不正確,使用刪除鍵是無法更正的。正確輸入密碼後你會看到下面這段話,如:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

如果用戶名是正確的,你已經成功設置 SSH 密鑰。如果你看到 “access denied” ,者表示拒絕訪問,那麼你就需要使用 HTTPS 去訪問,而不是 SSH 。

References

https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%88%9D%E6%AC%A1%E8%BF%90%E8%A1%8C-Git-%E5%89%8D%E7%9A%84%E9%85%8D%E7%BD%AE

https://www.cnblogs.com/ayseeing/p/3572582.html

發佈了255 篇原創文章 · 獲贊 71 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章