Mac 生成 SSH Key 連線 GitHub

Galois發表於2020-06-08

首先檢查本地有沒有 ssh 秘鑰:

$ cd ~/.ssh/ && ls

如果發現沒有 id_rsa,或 id_rsa.pub 說明沒有,那就生成一個:

$ ssh-keygen -t rsa -C "your_email@example.com"

之後需要設定兩次密碼,可以直接回車過去,沒什麼必要,反正都會生成。
其中 rsa 的意思是:

RSA 加密演算法是一種非對稱加密演算法。在公開金鑰加密和電子商業中RSA被廣泛使用。RSA 是 1977 年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA 就是他們三人姓氏開頭字母拼在一起組成的。
對極大整數做因數分解的難度決定了 RSA 演算法的可靠性。換言之,對一極大整數做因數分解愈困難,RSA 演算法愈可靠。假如有人找到一種快速因數分解的演算法的話,那麼用 RSA 加密的資訊的可靠性就肯定會極度下降。但找到這樣的演算法的可能性是非常小的。今天只有短的RSA鑰匙才可能被強力方式解破。世界上還沒有任何可靠的攻擊RSA演算法的方式。只要其鑰匙的長度足夠長,用 RSA 加密的資訊實際上是不能被解破的。
1983 年麻省理工學院在美國為 RSA 演算法申請了專利。這個專利 2000 年 9 月 21 日失效。由於該演算法在申請專利前就已經被發表了,在世界上大多數其它地區這個專利權不被承認。

現在可以 ls 檢視 ~/.ssh/ 裡面的內容,會發現多了 id_rsaid_rsa.pub 兩個檔案,其中帶 .pub 字尾的是公鑰(Public Key)檔案。
現在可以把這個公鑰檔案裡面的內容複製到剪貼簿,貼上進 Github 的新建 SSH Key 的 Key 裡面去了。

$ cat id_rsa.pub | pbcopy

這樣就配置好了 SSH 訪問 Github 的許可權。
可以測試一下行不行:

$ ssh -T git@github.com

會看到一條訊息:

Connection to github.com port 22 [tcp/ssh] succeeded!
Hi YourGithubName! You've successfully authenticated, but GitHub does not provide shell access.

別擔心,這很正常,這是在說連線 github.com:22 成功!你已成功認證!不過 Github 不支援 shell 訪問。(因為你要用 git 命令訪問)

一般情況下很多人不管是在自己寫專案 push git 遠端倉庫還是從遠端倉庫 clone 專案到本地,這些過程中使用的是 git@github.com 這樣的 ssh 訪問方式,沒有許可權的情況下就會有這樣的報錯:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

遇到這種問題,去配置一下 SSH Key 就行了,這是每個 git 使用者都會遇到的必然坑。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
不要試圖用百米衝刺的方法完成馬拉松比賽。

相關文章