今天要來介紹一些SSH的操作及相關指令,一般我們要連結到遠端server通常都要透過git push origin master,這種方式需要登入帳密,且容易被駭客盜用,也較為複雜,而SSH就可以避免這些問題。
1.Local端也就是我們會有兩把key,分別為public key, private key
,而我們將public key傳至server端,所以server端會有一把public key。
2.當Local端發起SSH連接以後,server會回傳一段random message給Local端。
3.而我們在收到message後,利用private對message去做加密,以後再回傳給遠端,遠端再用public key去解密,如果message吻合,則完成SSH連接。
詳細流程如下圖:
而我們在Git實際操作一下。
1.cd ~/.ssh : 首先先檢查ssh key是否存在
如果存在
直接通過 ssh-key =>ssh-keygen
來產生ssh。
如果不存在
,我們就利用ssh-keygen -t rsa -C "your_email@youremail.com
":產生一個新的SSH key。
此時去存在ssh key的目錄(cd .ssh/)可發現有兩個file,一個為id_rsa(private key)、另一個為id_rsa.pub(public key)。
2.再來,我們將local端所產生的public key傳至遠端server,ssh-copy-id -i ~/.ssh/mykey user@host
:可將local端的public key 傳至指定的server端
,這時候可利用ssh (遠端server),發現已經不需再次輸入密碼登入了。
1.首先先進入setting,裡面有SSH and GPG Key的option,點選進去可以去new 一個 key。
2.接著more id_rsa.pub獲取local public key的資料並貼到github new SSH key的地方。
但此時再次git push origin master,發現仍然需要輸入密碼,是因為我們這個local倉庫是經由https git clone來的,所以我們倉庫預設是由Https做驗證,他不會走SSH。
3.我們可以利用vim .git/config 更改資料中url,至github點選clone地方將 clone with https 改為 clone with ssh並將其url 覆蓋上去即可。