Git 踩坑紀錄(二)git clone with SSH keys 或 HTTPS 設定步驟

TSENG FU CHUN / 豆腐
8 min readApr 2, 2020

--

主要是公司的專案,環境都有人幫忙設定的妥妥的,所以在 git 不會遇到很嚴重的問題(讚嘆前輩)。
回到家要設定自己的電腦的時候,就是一臉問號,所以才決定寫文紀錄!
而且,因為公司是 Mac,家裡電腦是 PC,姑且不管美醜問題,使用習慣也有很大的差異啊。

git clone這個指令,clone 是複製的意思,我的理解是「複製專案的檔案到自己的電腦裡」。
點開 Clone or download,可以選擇 SSH 連線、HTTPS 連線。

透過 SSH (Secure Shell protocol) 連線複製專案

SSH 是指遠端登入協定,特色在於處理作業採用加密機制,安全性高,可以避免資料竊取或外洩的問題。

如果你的 Github 帳號沒有設定任何公開的 SSH keys,可以新增一個或是採用 HTTPS 連線複製專案。

You don’t have any public SSH keys in your GitHub account.
You can add a new public key, or try cloning this repository via HTTPS.

如何產生一個 SSH keys,並且加進自己的 Github 帳號?
因為現在當了工程師,公司用的系統是 Mac,家裡的 Windows 時常被我冷落,所以完全沒有設定 SSH keys。這陣子要設定的時候,才發現原來過去都是用 HTTPS 複製專案,好像不太好啊哈哈哈(反省)。

按照官方文件一個一部步驟設定:點我或是 參考這篇,這篇有其他的環境設定方式,不過有些指令有點不同,可以自己研究一下)。
我使用 Git bash,記得要先安裝 Git ,這邊簡單列出步驟:
STEP 1.打開 Git Bash,設定你的 e-mail

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
// your_email@example.com 把這段替換成你自己的 e-mail
// 我是直接設定成自己 Github 的帳號,主要是方便記憶
會跳出下面這條訊息:
> Generating public/private rsa key pair.
接著你可以指定 SSH keys 檔案要放的位置,如果不設定,Windows 預設的位置是:c/Users/...
接著會詢問要不要設定通行密碼,再輸入一次後確認:
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

產生一組 SSH keys 之後,再到 Windows 預設的路徑查看,會看到如下方截圖的兩個檔案:

  1. id_rsaprivate key,這是給自己用的。
  2. id_rsa.pubpublic key,這是給外部系統用的,加到 Github 帳戶就是用這個。我自己的理解是:Github 是公開的網站服務,所以需要透過這種方式授權給 Github 存取自己電腦的權限。

#截圖上另一個檔案:known_hosts,可以先忽略,這個是把 SSH keys 加到 Github 帳戶之後才會出現的檔案。

STEP 2.接著授權 Github SSH keys 連線的權限
白話一點說,就是把 SSH keys 加到 Github 帳戶裡,之後你就可以用 Github 綁定的帳號,透過自己的電腦,用 SSH keys 連線方式 git clone 任何開源的專案原始碼。

  • Github 點頭像-> Settings -> Personal settings -> SSH and GPG keys
  • 再複製剛剛產生的 id_rsa.pub 檔案裡面的內容,全部貼到 key 的位置,title 可以隨便命名,只要自己看得懂就行。
    這邊的操作,我原本是參考:官方文件,但後來碰到問題,所以乾脆就直接找 id_rsa.pub 檔案手動複製貼上。
  • 會收到 Github 寄來的信件,通知有新的 public key 加到你的帳戶。
  • 再回去 Github 頁面上就會看到剛剛加入的 SSH keys。
找找你的大頭貼,點下去之後找到 Settings
找到 SSH and GPG keys
加入成功會收到 e-mail 通知
綁定好之後就會像這樣,這代表 SSH keys 有成功加入

STEP 3.測試是否設定成功 & 設定 SSH agent

$ ssh -T git@github.com
// 因為是首次連線,而且無法確認 host 主機的真實性,只知道這個即將連結的遠端主機的 SSH key fingerprint,是否確定要連線?

GitHub’s SSH key fingerprints:官方文件提供比對的 fingerprint。
可以跟 Git Bash 裡出現的「Github RSA key fingerprint is SHA256…」
比對確認與 Github 官方提供的一樣之後,再輸入 yes。

// 如果前面有設定通行密碼 passphrase,輸入即可。// 接著,就可以看到他跟你打招呼囉!
> Hi <your Github username>! You've successfully authenticated, but Github does not provide shell access.

如果出現:Permission denied (public key).則表示沒有設定成功。
接著要設定 SSH agent,用 SSH agent 管理登入驗證用的金鑰(passphrase),避免每次都要重複輸入。

$ eval $(ssh-agent -s)
// 開啟 SSH agent 的指令,成功的話會回傳 Agent pid 59566
$ ssh-add ~/.ssh/id_rsa
// 把 key 加到 SSH agent 的指令
操作到這裡,基本上就完成設定了。
後面這個指令,純粹是我好奇它的用途,所以一起列出來。
$ ls -al ~/.ssh
// 檢查是否有現存的 SSH keys,有的話就不用重新產生啦!

接著,就可以順利的用 SSH keys 連線方式去 git clone 專案了!

git clone project

透過 HTTPS 連線複製專案(簡單但有安全疑慮)

Use Git or checkout with SVN using the web URL.
簡單來說,就是透過網址去連線,開頭會是 https://github.com/<user-name>/<project-name>.git
只要做一件事,就可以順利的複製一份專案的檔案:
git clone https://github.com/<user-name>/<project-name>.git

結語

這篇花了兩天在查資料跟彙整,主要是每次在 git clone 檔案的時候,並不了解實際上自己在做什麼。只是知道「哦,這樣就可以把專案的 Code 拿下來了耶!」

如果是過去的我,大概就是把官方文件照著操作一遍,然後好沒問題就不管他了。但這次,因為碰到自己要從頭設定,就會在各種莫名其妙的地方卡住,常常是開了 Repository 又刪,然後輪迴 N 遍以後,決定跟他熟悉熟悉,不再瞎子摸象。

發現寫文真的是一件痛苦又有趣的事,因為可以查到很多意料之外的資料。
開著一堆分頁幾乎是常態了 XD

--

--

TSENG FU CHUN / 豆腐
TSENG FU CHUN / 豆腐

Written by TSENG FU CHUN / 豆腐

正往前端工程師之路邁進!

Responses (2)