ssh-keygen -t rsa -b 4096 -C "郵箱":這條命令的目的是為了讓本地機器ssh登錄遠程機器上的GitHub賬戶無需輸入密碼。將這條命令分解:
1、ssh-keygen:
SSH 為 Secure Shell 的縮寫,SSH 為建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議。SSH 是目前較可靠,專為遠程登錄會話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠程管理過程中的信息泄露問題。
從客戶端來看,SSH提供兩種級別的安全驗證:
????????第一種級別(基于口令的安全驗證):只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸?shù)臄?shù)據(jù)都會被加密,但是不能保證你正在連接的服務(wù)器就是你想連接的服務(wù)器??赡軙袆e的服務(wù)器在冒充真正的服務(wù)器,也就是受到“中間人”這種方式的攻擊。
????????第二種級別(基于密匙的安全驗證)ssh-keygen:需要依靠密匙,你必須為自己創(chuàng)建一對密匙,并把公用密匙放在需要訪問的服務(wù)器上。如果你要連接到SSH服務(wù)器上,客戶端軟件就會向服務(wù)器發(fā)出請求,請求用你的密匙進行安全驗證。服務(wù)器收到請求之后,先在該服務(wù)器上你的主目錄下尋找你的公用密匙,然后把它和你發(fā)送過來的公用密匙進行比較。如果兩個密匙一致,服務(wù)器就用公用密匙加密“質(zhì)詢”(challenge)并把它發(fā)送給客戶端軟件??蛻舳塑浖盏健百|(zhì)詢”之后就可以用你的私人密匙解密再把它發(fā)送給服務(wù)器。用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網(wǎng)絡(luò)上傳送口令。第二種級別不僅加密所有傳送的數(shù)據(jù),而且“中間人”這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒 。
????????ssh-keygen有很多的參數(shù),比如這里的-t -b -C都是他的一些參數(shù)。
2、-t rsa:t是type的縮寫
-t即指定密鑰的類型,密鑰的類型有兩種,一種是RSA,一種是DSA:
? ? ? ? RSA:RSA加密算法是一種非對稱加密算法,是由三個麻省理工的牛人弄出來的,RSA是他們?nèi)齻€人姓的開頭首字母組合。
????????DSA:Digital Signature Algorithm (DSA)是Schnorr和ElGamal簽名算法的變種。
為了讓兩個linux機器之間使用ssh不需要用戶名和密碼。所以采用了數(shù)字簽名RSA或者DSA來完成這個操作。ssh-keygen默認使用rsa密鑰,所以不加-t rsa也行,如果你想生成dsa密鑰,就需要加參數(shù)-t dsa。
3、-b 4096:b是bit的縮寫
-b 指定密鑰長度。對于RSA密鑰,最小要求768位,默認是2048位。命令中的4096指的是RSA密鑰長度為4096位。
DSA密鑰必須恰好是1024位(FIPS 186-2 標(biāo)準的要求)。
4、-C "郵箱":C是comment的縮寫
-C表示要提供一個新注釋,用于識別這個密鑰,所以“”里面不一定非要填郵箱,可以是任何內(nèi)容,郵箱僅僅是識別用的key
總結(jié):當(dāng)你創(chuàng)建ssh的時候:-t 表示密鑰的類型 ,-b表示密鑰的長度,-C 用于識別這個密鑰的注釋 ,這個注釋你可以輸入任何內(nèi)容,很多網(wǎng)站和軟件用這個注釋作為密鑰的名字