Github SSH 連線設定,確保 Mac SourceTree 正常運作
前陣子在 Mac 上使用 SourceTree 這套 GUI 工具來管理 Github repositories,但由於帳號因安全性考量改用 2FA (Two-factor authentication) 認證後,原先在 SourceTree 採用 HTTPS 利用帳號密碼登入的方式已不可行,因此研究利用 SSH pub key 登入設定,並且整理成此筆記。
不採用 SourceTree 提供的 GUI 工具來設定 SSH,而是回歸到 OS 本身,利用 command line 方式進行,對於以及不甚熟悉 Unix-like 作業系統的自己來說,在這次操作中學習到更多關於 SSH Key 管理的知識啊。
首先先確認使用者目錄,以下範例皆採用自身電腦的設定,應當根據當下環境進行適當調整,例如使用者 siyuan
應當改成自己的帳戶名。
$ cd ~ && pwd
/Users/siyuan
Generate SSH Keys
第一步先產生 SSH Key,使用 ssh-keygen
產生長度為 4096 bytes 的公開/私密金鑰 (public and private keys),期間需指定儲存位置,並且沒有額外設定密碼:
$ ssh-keygen -t rsa -b 4096 -C “siyuan@twsiyuan.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/siyuan/.ssh/id_rsa): /Users/siyuan/.ssh/github
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in github.
Your public key has been saved in github.pub.
The key fingerprint is:
SHA256:G+Y+qiJTzvLW+MidwMArUngAM7VFf62R5y19XeaodMk
The key's randomart image is:
+---[RSA 2048]----+
|+...o |
|.o o . o |
|. . . + o o|
|.o . = o . *.|
|o.o S o + E o|
| =o o o o + |
|o=oo o . |
|*.*+.. .. |
| *+o=..... |
+----[SHA256]-----+
要注意的是該金鑰不覆蓋預設的金鑰 /.ssh/id_rsa
,而是改名字存成另外一把鑰匙,以期許未來在帳戶管理多把金鑰。
使用以下指令來檢查金鑰檔案是否存在:
$ ls ~/.ssh/
github github.pub known_hosts
接著設定 /.ssh/config
,使得 ssh 在連線到 Github 時,能夠使用指定的那把私密金鑰進行認證:
使用 vi
進行檔案編輯:
vi ~/.ssh/config
在檔案內容加入以下設定,注意私密金鑰位置應根據當下環境調整:
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile /Users/siyuan/.ssh/github
最後複製公開金鑰 github.pub
的內容,待會在 Github 網頁管理介面上,新增 SSH Keys 時使用。
$ cat ~/.ssh/github.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDS4L1VxXK6y7i2PFONrhv+yG2jfy9HF6DB7m3geu6QZItSBTorJxlMxRNYFzBOLZ+oPi/OODmO/woO8HzVBluyZJSkQjRG1zs1Sua2e5mdO67Rtrwy7cY2VyrNVlJVCxdfQL8UcEF/+K7p2LO8idaFOE1Me4zSBgcwd5h6T6/LXkuMAxjKVqE1OOBhiU8Dlwi/tn/2nzEt4Oblf1YAd9RiPRCG9s51zD8XMML2axovTx8cUntcI0fQWA/QczIhYcl1qJG5Dp5mwr2AdekZn/e8FufPslI01d4UtcZOFb9KTMv3ObMDl5SfeKVxCniz0f4lzt+F89CovARCfK3zcy7r siyuan@twsiyuan.com
Github SSH key setup
登入 Github 網頁版,在以下路徑找到新增 SSH Key 選項:Account > Personal Settings > SSH and GPG keys > New SSH key,或是直接前往 https://github.com/settings/keys,並且貼上上節複製的公開金鑰內容。
以上便完成所有設定,接著進行設定檢查,透過以下指令進行連線測試,若是在第一次會詢問是否要連線該未知的主機:
$ ssh -T git@github.com
The authenticity of host 'github.com (IP ADDRESS)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?
輸入 yes
繼續,成功會出現以下訊息:
Hi siyuan! You've successfully authenticated, but GitHub does not provide shell access.
反之若設定不正確會出現拒絕的訊息:
$ ssh -T git@github.com
git@github.com: Permission denied (publickey).
這時候就得開始偵錯啦,利用 -v
印出連線是使用哪把 Key,以進行進一步的問題排除:
$ ssh -v git@github.com
就此設定完成,不需要在 SourceTree 介面中進行帳號管理介面的設定,便可以直接對該帳號的 Github repositories 進行操作。
但如果在 Mac 上使用不同的 Github 帳號,切換管理不同的 repositories,那會是另外一個問題呢。
沒有留言: