[SA] GitHub使用SSH key連線紀錄
GitHub大概在我國中的時候可以直接使用終端機登入GitHub,然後進行各種動作,但這一次我要使用的時候發現怎麼都登不進去
之前的登入方式大概就是這樣
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
醬就喔虧了~