前言
在 GitHub 中有兩種存取資料的連線方式一種是 https
另一種是 ssh
,兩者的差別在於 https 在每次 git push
前都要輸入密碼,而 ssh 相對的就不用輸入密碼即可立即上傳,若不想每次都輸入密碼可以參考 ssh 連線方式。
SSH 連線運作方式
SSH(安全殼層協定,Secure Shell),SSH 公開金鑰預設保存在帳戶的主目錄下的 ~/.ssh 目錄,包含一個公鑰與私鑰,運作方式可以看下面這張圖(參考於),這張圖的 Client 為我們使用者端而 Server 為 GitHub 伺服器,當本機端用戶 push 資料到遠端時,就會先發送 SSH 連線請求,然後 GitHub 就會隨機傳送一串訊息給本機端用戶電腦使用私密加密,加密後 GitHub 再利用公鑰解密在驗證解密後的訊息是否跟原先的吻合,若是的話則完成 SSH 驗證。 圖片來源: http://sebastien.saunier.me/blog/2015/05/10/github-public-key-authentication.html
- Client 端發送 SSH 連線請求
- Server 傳送隨機訊息
- Client 端使用私鑰加密,並回傳加密訊息回 Server 端
- Server 端使用公鑰解密,若訊息吻合代表用戶驗證成功
教學
1. 產生金鑰
用 ssh-keygen 來建立。該程式在 Linux/Mac 系統上由 SSH 包提供,而在 Windows 上則包含在 MSysGit 包裡,輸入以下指令,來產生新的 SSH Key。
$ ssh-keygen -t rsa -b 4096 -C "你的信箱"
它先要求你確認保存公開金鑰的位置(.ssh/id_rsa),然後它會讓你重複一個密碼兩次。
2. 設定金鑰代理
如果沒設定代理每次上傳時還是會要求輸入密碼。
## 啟用 SSH 代理伺服器
$ eval "$(ssh-agent -s)"
## 將私鑰及加入到 SSH 代理上
$ ssh-add -K ~/.ssh/id_rsa
3. 上傳公鑰至 GitHub
開啟終端機進入 .shh
資料夾,此資料夾為隱藏的在 Mac 內的個人目錄下可以找到,進入後可以看到 id_rsa、id_rsa.pub 兩個檔案分別為私鑰和公鑰,打開公鑰(id_rsa.pub)把全部複製起來,開啟瀏覽器進入 GitHub 頁面,Github > Settings > SSH and GPG keys 的設定頁面,選擇 New SSH Key,填入 Title 與 Key 後即可送出。
$ cd ../.ssh
$ cat id_rsa.pub
完成後就可以測試上傳囉!此外後台也會看到最後一次連線存取的時間
鼓勵持續創作,支持化讚為賞!透過下方的 Like 拍手👏,讓創作者獲得額外收入~https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A