GitHub教程 SSH keys配置
SSH 為 Secure Shell 的縮寫,由 IETF 的網路小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。
在管理Git專案上,有兩種克隆到本地的方法。
直接使用https url克隆到本地
使用SSH url克隆到本地
這兩種方式的主要區別在於:
使用https url對初學者來說會比較方便,複製https url然後到git Bash裡面直接用clone命令克隆到本地就好了,但是每次fetch和push程式碼都需要輸入賬號和密碼,這也是https方式的麻煩之處。
使用SSH url需要在只用之前先配置和新增好SSH key。每次fetch和push程式碼都不需要輸入賬號和密碼,如果你想要每次都輸入賬號密碼才能進行fetch和push也可以另外進行設定。
1.檢查你電腦上是否有SSH Key
~/.ssh 或者用~/.ssh ls
上邊這行命令的作用是看一哈你的電腦上有沒有.ssh資料夾。
如果電腦上有,就會顯示bash: /c/Users/…/.ssh: Is a directory
如果電腦上沒有,那就顯示bash: /c/Users/…/.ssh: No such file or directory
2.建立SSH Key
如果你電腦上有了,你就可以直接跳過這一步
在Git Bash中輸入
$ ssh-keygen -t rsa -C "你的郵箱"
然後就會顯示這兩行:
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/16627/.ssh/id_rsa):
這是讓你輸入一個檔名,用於儲存剛才生成的 SSH key 程式碼。為了避免麻煩,不用輸入,直接回車,那麼就會預設生成id_rsa和id_rsa.pub兩個祕鑰檔案。
這時候已經建立好.ssh這個檔案夾了,會提示:
Created directory ‘/c/Users/16627/.ssh’.
緊接著又會問你:
Enter passphrase (empty for no passphrase):
就是讓你輸入密碼,如果你設定了密碼,那在你使用ssh傳輸檔案的時候,你就要輸入這個密碼。為了避免麻煩,建議不用設定,直接回車。
Enter same passphrase again:
這就是讓你再輸入一次密碼,就跟我們註冊賬號時候設定密碼需要設定兩次一樣。上一步沒設定密碼,這裡直接回車就可以了。到這裡你的祕鑰就設定好了,你會收到這段程式碼提示:
Your identification has been saved in /c/Users/…/.ssh/id_rsa
Your public key has been saved in /c/Users/…/.ssh/id_rsa.pub
還會向你展示你的祕鑰長啥樣
當你看到上面這段程式碼,那就說明你的 SSH key 已經建立成功,你可以再使用~/.ssh看一下,現在檔案是真的存在了。
3.新增SSH Key到GitHub
首先開啟Github網頁
(黃色框框是我已經建立的SSH key。)
點選右上角新建一個SSH Key。
title隨便給他起個名字就好。然後是key,這時候你要開啟你剛才在電腦上的SSH key。
還記得這一步嗎:
按照紅框框裡的路徑,找到.ssh資料夾。用記事本開啟id_rsa.pub檔案,全選其中的內容貼上到網頁的Key中。
然後你就會受到建立成功的郵件了。
4.測試一下該SSH key
在git Bash 中輸入以下程式碼
$ ssh -T [email protected]
注意是[email protected],不是你的郵箱。
然後會提示你:
The authenticity of host ‘github.com (13.229.188.59)’ can’t be established.
RSA key fingerprint is SHA256:nThbg6kXUp…
Are you sure you want to continue connecting (yes/no/[fingerprint])?
輸入yes,回車
接下來就會提示你輸入密碼,如果上邊設定ssh的時候,你沒設定密碼會提示你:
Warning: Permanently added ‘github.com,192.30.255.112’ (RSA) to the list of known hosts.
警告完了,如果你能看到如下提示,那你已經成功設定SSH金鑰。
Hi “使用者名稱”! You’ve successfully authenticated, but GitHub does not provide shell access.
如果你看到 access denied,者表示拒絕訪問,那麼你就需要使用 https 去訪問。