Jun

只要我的心還會跳,腿還能動

我就沒有理由停下前進的步伐

設置 SSH Key 記錄


Windows 似乎會記錄登入 GitHub 時的認證,但如果同時有兩個帳號在使用,且以 HTTPS 的方式做 git push 會非常不方便,當系統紀錄的是 A 帳戶的認證,那麼在對 B 帳戶的 repo 做 git push 時會噴 403 的錯誤。

一個比較笨的方法是到控制台 > 使用者帳戶 > 認證管理員裡面刪除認證,那麼下次 git push 它會再次要求輸入帳號密碼,這時候登入 B 帳戶才可以對 B 帳戶裡的 repo push 成功,但這實在太蠢了,且下次如果需要對 A 帳戶裡的 repo push 得再重複一次這個流程,但使用 SSH 的方式做 git push 就不需要每次都輸入帳密了。

因為設置 SSH Key 的步驟有點多所以為此記錄一下:


1. 檢查 SSH Key

cd ~/.ssh

如果出現 No such file or directory 代表先前已經新增過,如果是這樣那就自行將檔案備份或刪除,在此假設從未新增過

2. 產生 SSH Key

ssh-keygen -t rsa -C "youremail@example.com"

Email 換成自己的,接下來的問題建議都直接按 Enter,這樣 push 時就不需要打任何東西,Enter 至結束後就會產生一組 SSH Key,這組 Key 會放在 ~/.ssh/id_rsa.pub

3. 接著用編輯器開啟 id_rsa.pub 這支檔案裡面的內容然後複製
4. 進到自己的 GitHub 的 Settings > SSH and GPG keys 點選 New SSH Key
5. Title 隨你填寫任何文字,但建議寫一些比較能辨識這組 Key 是由哪裡或哪個作業系統產生的文字,然後我們貼上剛剛從 id_rsa.pub 複製的內容
6. 接著按下 Add SSH Key,輸入自己的 GitHub 密碼驗證,驗證成功後就會看到你的 SSH Keys 下面多一欄
7. 測試

ssh -T git@github.com

輸入後應該會看到以下信息:

The authenticity of host ‘github.com (xxx.xx.xxx.xxx)’ can’t be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?

x 都是碼掉的部分,並不是真的出現 x 喔!然後輸入 yes 後應該會看到:

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

這樣就是新增成功了~

8. 在 repo 添加 SSH Key

到 GitHub 選擇你要的 repo,複製 SSH 位址,格式大概像這樣 git@github.com:帳號/儲存庫名稱.git

git remote set-url origin git@github.com:<username>/<reponame>.git

這樣就完成了,下次 git push 就不再需要輸入帳密了!