由於 git 大檔案用 http 方式難以傳輸,必須使用 ssh-key,而 ssh-key 又生成了好多個。最近在各種折騰 ssh,公鑰私鑰上花費了很多時間,現將一些問題總結如下。系統為 mac/linux。
ssh之所以能夠保證安全,原因在於它採用了公鑰加密。
整個ssh密碼登入過程是這樣的:
使用者向遠端主機發登入請求:ssh user@遠端主機
遠端主機收到使用者的登入請求,把自己的公鑰發給使用者。
使用者使用這個公鑰,將登入密碼加密後,傳送回遠端主機。
遠端主機用自己的私鑰,解密登入密碼,如果密碼正確,就同意使用者登入。
$ ssh user@host這段話的意思是,無法確認host主機的真實性,只知道它的公鑰指紋,問你還想繼續連線嗎?the authenticity of host 『host (12.18.429.21)』 can』t be established.
rsa key fingerprint is 98:2e:d7:e0:de9f:ac:67:28:c2:42:2d:37:16:58:4d.
are you sure you want to continue connecting (yes/no)?
所謂」公鑰指紋」,是指公鑰長度較長(這裡採用rsa演算法,長達1024位),很難比對,所以對其進行md5計算,將它變成乙個128位的指紋。上例中是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d
,再進行比較,就容易多了。
很自然的乙個問題就是,使用者怎麼知道遠端主機的公鑰指紋應該是多少?回答是沒有好辦法,遠端主機必須在自己的**上貼出公鑰指紋,以便使用者自行核對。
假定經過風險衡量以後,使用者決定接受這個遠端主機的公鑰。
are you sure you want to continue connecting (yes/no)? yes系統會出現一句提示,表示host主機已經得到認可。
warning: permanently added 『host,12.18.429.21』 (rsa) to the list of known hosts.然後,會要求輸入密碼。
password: (enter password)如果密碼正確,就可以登入了。
原文:認證-原理
在命令列中,鍵入
ssh-keygen
-t rsa -c
"$your_email"
會生成一對金鑰,預設的情況下,私鑰將放在~/.ssh/id_rsa
,對應的公鑰則為~/.ssh/id_rsa.pub
。
在生成的過程中,會詢問你放金鑰的位置。由於每個人可能不止需要乙個金鑰,所以可以另存為其他名字的金鑰,比如path/to/your/dir/id_rsa_new
,此時它也將生成對應的公鑰。
使用以下**來檢視生成的公鑰
cat ~/.ssh/id_rsa.pub
將公鑰複製到你需要的伺服器上(比如 github,gitlab 等等)
如前文所說,如果我們需要多個金鑰,那麼在使用中,如何確定實際使用哪乙個呢?
目前為止,ssh-key 用得最多的兩個 地方,一是 git 相關服務,二是遠端連線伺服器。
命令輸入
用-i
指定私鑰,-p
指定埠,連線伺服器
ssh -i path/to/your/key [email protected]
.1.237
-p23
scp -i path/to/your/key filename [email protected]
.1.237:/diskpath
配置 ~/.ssh/config 檔案
由於 git 命令不能指定私鑰,所以要通過 ~/.ssh/config 檔案來控制。如果沒有就在~/.ssh目錄建立config檔案,該檔案用於配置私鑰對應的伺服器。比如:
host github
hostname github.com
user git
identityfile ~/.ssh/id_rsa
host tsinghua
hostname tsinghua.edu
.cnuser git
identityfile ~/.ssh/id_rsa_new
這樣,鏈結到 github.com 時,使用的就是 id_rsa;鏈結到 tsinghua.edu.cn 時,使用 id_rsa_new。另外,host 的名字可以隨便設定,並且在 ssh 後面相當於 user@hostname,比如ssh github
等價於ssh [email protected]
。
私鑰密碼修改
如果工作中,你使用了乙個沒有密碼的私鑰,有一天伺服器被黑了,你是跳到黃河都洗不清。而生成金鑰時,往往會選擇乙個比較簡單的密碼。為了安全起見,還是應該修改一下:利用ssh-keygen -p
,系統會提示選擇需要修改的私鑰,預設是~/.ssh/id_rsa
,選好檔案後按回車,會提示你輸入舊密碼,輸入好後會提示輸入新密碼,則修改完成。
管理多個git 生成的ssh key
經常我們可能需要上傳github,和gitlab,或者你有多個github賬號,我們需要對應不同的賬號上傳,我們需要配置多個ssh key 這裡我們就以配置github,gitlab,兩個ssh key 為案例 生成第乙個ssh keyssh keygen t rsa c yourmail gmai...
本地多對ssh金鑰管理
多個平台,多個賬戶,多對金鑰。ssh keygen t rsa p c f key for github t 金鑰型別 p 密碼 c 注釋 f 檔名執行命令會生成兩個檔案 key for github 私鑰 和 key for github.pub 公鑰 檔案的存放位置是在shell視窗開啟時的當前...
Git 與 ssh key 多賬戶配置 md
終端下 cd 到 ssh 目錄下,執行 ssh keygen t rsa c biao166 github.com f id rsa github其中 biao166 github.com 替換為你的郵箱,id rsa github 為生成檔案檔名,執行後會問你是否需要 enter a passph...