SSH key使用總結

ScoutYin發表於2018-03-16

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_rsaid_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 passphrasenew passphrase就OK了。

也可以通過GitHub Help瞭解更多

GitHub: ScoutYin

相關文章