https和SSH區別
- 前者可以隨意克隆github上的專案,而不管是誰的;而後者則是你必須是你要克隆的專案的擁有者或管理員,且需要先新增 SSH key ,否則無法克隆。
- https url 在push的時候是需要驗證使用者名稱和密碼的;而 SSH 在push的時候,是不需要輸入使用者名稱的,如果配置SSH key的時候設定了密碼,則需要輸入密碼的,否則直接是不需要輸入密碼的。
關於SSH
使用SSH協議,我們可以連線並驗證遠端伺服器和服務。使用SSH金鑰,我們可以連線到GitHub,而無需在每次訪問時提供使用者名稱或密碼。
檢查是否已有SSH key
在生成SSH金鑰前,應先檢查是否已存在SSH key
- 1、開啟Git Bash
- 2、輸入
ls -al ~/.ssh
以檢視是否存在現有金鑰 - 3、檢查目錄列表是否已有類似
id_rsa
和id_rsa.pub
的兩個檔案,前者是金鑰檔案,後者是公鑰檔案
預設情況下,公鑰的檔名是以下之一:
id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub
如果未發現有類似的公鑰和私鑰對,則可以按照如下方法生成一個SSH key:
- 1、開啟Git Bash
- 2、輸入下面的命令,將郵箱地址替換你的GitHub郵箱地址
$ ssh-keygen -t rsa -b 4096 -C " your_email@example.com"
複製程式碼
各引數含義:
-t:金鑰型別,一般為dsa,ecdsa,ed25519和rsa這幾種,預設為rsa,可省略;
-b:金鑰的位數;
-C:註釋文字,比如郵箱。
- 3、當出現以下提示指定儲存位置時可選擇直接Enter回車,即選擇預設儲存位置
Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):[Press enter]
複製程式碼
- 4、接著會提醒設定密碼,可以直接回車回車,當然也可以選擇設定密碼
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]
複製程式碼
到這裡就生成了一個新的SSH key,可以使用ls命令檢視生成後的檔案目錄:
- id_rsa和id_rsa.pub分別為私鑰和公鑰
新建一個config檔案
$ touch ~/.ssh/config
複製程式碼
然後在config檔案中新增以下內容:
Host *.github.com
IdentityFile ~/.ssh/id_rsa
User '你的使用者名稱'
複製程式碼
接著將id_rsa.pub內的內容複製並新增到你的GitHub賬戶中(Settings->SSH and GPG keys->New SSH key)
OK,進行一下連結測試
$ ssh -T git@github.com
複製程式碼
回車後出現(如果設定了密碼,則需輸入密碼):
Hi xxx! You've successfully authenticated, but GitHub does not # provide shell access.
複製程式碼
就表示設定成功了,Bingo!
修改remote url
在你的專案目錄下先使用git remote -v
檢視遠端地址
$ git remote -v
origin https://github.com/someaccount/someproject.git (fetch)
origin https://github.com/someaccount/someproject.git (push)
複製程式碼
可以看出當前專案是使用https協議進行訪問的,然後我們可以使用命令改成SSH協議進行訪問:
$ git remote set-url origin git@github.com:AccountName/Project-name.git
複製程式碼
之後再檢視遠端地址:
$ git remote -v
origin git@github.com:AccountName/Project-name.git (fetch)
origin git@github.com:AccountName/Project-name.git (push)
複製程式碼
發現remote url已經變了。
然後你就可以愉快的使用git fetch, git pull , git push,再也不用輸入煩人的密碼了(如果設定了金鑰密碼passphrase,則會需要輸入該密碼)
tips:
如果有時候發現push不成功,提示the project you were looking for could not be found
那麼就有可能是遠端倉庫地址換了
- 刪除 git remote rm origin
- 新增 git remote add origin git@github.com
如果想修改SSH key密碼,如下操作:
$ cd ~/.ssh/
複製程式碼
這裡修改rsa型別金鑰的密碼:
$ ssh-keygen -f id_rsa -p
複製程式碼
-f
{keyfile};-p
表示請求修改私鑰的密碼,而不是建立一個新的私鑰.
然後按照提示輸入你的old passphrase
和new passphrase
就OK了。
也可以通過GitHub Help瞭解更多
GitHub: ScoutYin