[SA] GitHub使用SSH key連線紀錄

Chelsea Tsao
茲生滋事
Published in
5 min readApr 25, 2023

GitHub大概在我國中的時候可以直接使用終端機登入GitHub,然後進行各種動作,但這一次我要使用的時候發現怎麼都登不進去

Photo by Richy Great on Unsplash

之前的登入方式大概就是這樣

https://github.com/<user-name>/<project-name>.git

下了 git clone之後就會要求要登入

Username for 'https://github.com'
Password for 'https://<username>@github.com'

之後就會出現他說2021年8月13號他就更改了這樣的登入方式,必續用個人的Token來解決登入問題

emote: Support for password authentication was removed on August 13, 2021. 
Please use a personal access token instead.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories

所以為了登入我使用了兩種方法嘗試
1.Personal access Tokens(❌)
2.SSH密鑰(⭕️)

第一種方法:Token(官方說明文件)
路徑:打開GitHub settings ➡️ Developer settings

然後需要設定三個東西
1.Note ➡️ 給他一個名字
2.Expiration ➡️ 設定期限
3.Select Scopes ➡️ 選擇權限

然後就可以申請Token了,申請完Token之後就可以複製
這邊一定要保存Token,如果不見了就要重新申成一個新的
之後就可以把Token複製到Keychain Access

在Keychain Access裡面找到github.com,把剛剛的Token放進密碼的欄位

$ git clone https://github.com/USERNAME/REPO.git
Username: YOUR_USERNAME
Password: YOUR_TOKEN

再測試看看可不可行,但我這裡因為不行所以試了第二種

第二種方法:SSH密鑰(官方說明文件)
所以這邊就要從電腦裡面叫出你的密鑰

在終端機輸入

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

或是如果電腦算法的版本不一樣可以使用另外一種 ➡️ 查看rsa vs ed25519

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

之後就一直按enter,然後自行決定是否設定安全碼
就會出現公鑰(id_rsa.pub)以及密鑰(id_rsa)

再來就把SSH密鑰添加到ssh-agent,為的是讓有設定金鑰安全碼的可以不用每次輸入設定密碼,將密鑰加到代理,然後就會默認MacOS ssh-add的命令

>啟動ssh代理

$ eval "$(ssh-agent -s)"
> Agent pid 59566

但因為我的電腦是macOS Sierra 10.12.2 或更高版本,所以需要修改~/.ssh/config自動將密鑰加載到ssh-agent

>先檢查 ~/.ssh/config 文件是否在默認位置

$ open ~/.ssh/config
> The file /Users/YOU/.ssh/config does not exist.

>文件不存在,那就創建一個

$ touch ~/.ssh/config

然後就可以修改相對路徑跟名稱拉

>把SSH私鑰加入ssh-agent

$ ssh-add 

最後再把公要貼進GitHub
路徑打開GitHub Settings ➡️ SSH and GPG keys

把公鑰 id_rsa_pub貼近keys,然後幫它取個Title
並複製Clone裡的SSH連結就可以開始使用了!!

這邊也可以用另一個方法測試密鑰可不可以使用

$ ssh -T git@github.com
# Attempt to SSH in to github
> Hi USERNAME! You've successfully authenticated, but GitHub does not provide
> shell access.

我也是一直卡在not provide access這邊,我有爬文是說要用config的方式的方式,然後去修改檔案的網址,但後來我是更改遠端伺服器倉庫網址,否則就算配置 SSH,還是會走 https 的傳輸協定。(參考資料網址)

$ git remote set-url origin git@github.com:user_name/project.git

醬就喔虧了~

--

--