多金鑰ssh key生成與管理

2021-07-30 05:47:40 字數 2735 閱讀 7563

由於 git 大檔案用 http 方式難以傳輸,必須使用 ssh-key,而 ssh-key 又生成了好多個。最近在各種折騰 ssh,公鑰私鑰上花費了很多時間,現將一些問題總結如下。系統為 mac/linux。

ssh之所以能夠保證安全,原因在於它採用了公鑰加密。

整個ssh密碼登入過程是這樣的:

使用者向遠端主機發登入請求:ssh user@遠端主機

遠端主機收到使用者的登入請求,把自己的公鑰發給使用者。

使用者使用這個公鑰,將登入密碼加密後,傳送回遠端主機。

遠端主機用自己的私鑰,解密登入密碼,如果密碼正確,就同意使用者登入。

$ ssh user@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)?

這段話的意思是,無法確認host主機的真實性,只知道它的公鑰指紋,問你還想繼續連線嗎?

所謂」公鑰指紋」,是指公鑰長度較長(這裡採用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...