1胳施、公私鑰簡介與原理
公鑰和私鑰都屬于非對稱加密算法的一個實現(xiàn)烧董,這個加密算法的信息交換過程是:
持有公鑰的一方(甲)在收到持有私鑰的一方(乙)的請求時孝扛,甲會在自己的公鑰列表中查找是否有乙的公鑰堂淡,如果有則使用一個隨機(jī)字串使用公鑰加密并發(fā)送給乙然遏。
乙收到加密的字串使用自己的私鑰進(jìn)行解密扮超,并將解密后的字串發(fā)送給甲取刃。
甲接收到乙發(fā)送來的字串與自己的字串進(jìn)行對比,如過通過則驗證通過出刷,否則驗證失敗璧疗。
非對稱加密算法不能使用相同的密鑰進(jìn)行解密,也就是說公鑰加密的只能使用私鑰進(jìn)行解密馁龟。
2崩侠、使用密鑰進(jìn)行ssh免密登錄
ssh使用私鑰登錄大致步驟就是:主機(jī)A(客戶端)創(chuàng)建公鑰私鑰,并將公鑰復(fù)制到主機(jī)B(被登陸機(jī))的指定用戶下坷檩,然后主機(jī)A使用保存私鑰的用戶登錄到主機(jī)B對應(yīng)保存公鑰的用戶啦膜。
(1) 實驗環(huán)境
** 兩臺主機(jī):**
主機(jī)A(客戶機(jī)):192.168.187.137
主機(jī)B(被登陸機(jī)):192.168.187.143
(2) 實驗開始
- 在需要免密登陸的主機(jī)(主機(jī)A)下生成公鑰和私鑰
ssh-keygen -t rsa
-t rsa可以省略,默認(rèn)就是生成rsa類型的密鑰
**說明:**命令執(zhí)行后會有提示淌喻,輸入三次回車即可僧家,執(zhí)行完成后會在當(dāng)前用戶的.ssh目錄下生成兩個文件:id_rsa、id_rsa.pub文件裸删,前者時私鑰文件八拱,后者是公鑰文件(拷貝到其他主機(jī)只需要拷貝這個文件的內(nèi)容)
-
將公鑰復(fù)制到被登陸的主機(jī)上的 ~/.ssh/authorized_keys 文件中
拷貝公鑰有兩種方法,其原理都相同:
方式一:使用 ssh-copy-id 直接拷貝
使用 ssh-copy-id 進(jìn)行拷貝公鑰非常方便涯塔,只需要指定目標(biāo)主機(jī)和目標(biāo)主機(jī)的用戶即可肌稻。
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.187.142
執(zhí)行這條命令后會自動將登錄主機(jī)的公鑰文件內(nèi)容追加至目標(biāo)主機(jī)中指定用戶(root).ssh目錄下的authorized_keys文件中。這個過程是全自動的匕荸,非常方便爹谭。
** 方法二:自己創(chuàng)建文件進(jìn)行拷貝**
-
在登錄主機(jī)(客戶機(jī))上創(chuàng)建authorized_keys文件并將公鑰追加到該文件。
先cd到登錄機(jī)使用的用戶下的 .ssh 目錄榛搔,方便操作
# chmod 600 authorized_keys ```
##修改文件權(quán)限為600诺凡,該文件有規(guī)定如果屬組其他人出現(xiàn)可寫則文件就不會生效
2) 在被登錄機(jī)的指定用戶家目錄下創(chuàng)建 .ssh 目錄(這里在root用戶下創(chuàng)建,因為要使用密鑰登陸到root用戶)
```mkdir .ssh # chmod 700 .ssh ```
##將目錄權(quán)限改為700該目錄的權(quán)限必須是700才有效
3) 將登錄機(jī)創(chuàng)建的authorized_keys文件拷貝到被登錄機(jī)践惑,使用scp
``` scp authorized_keys root@192.168.187.142:/root/.ssh/
2 authorized_keys 100% 402 576.4KB/s 00:00```
1. **登錄**
使用主機(jī)A乙root用戶身份登陸到主機(jī)B
``` ssh root@192.168.187.142
2 Last login: Wed Feb 13 15:24:30 2019 from 192.168.187.137```
首次登錄將彈出保存信息腹泌,輸入yes即可,此時已經(jīng)實現(xiàn)了免密的密鑰登陸尔觉。
1. **注意事項和說明**
上例只能實現(xiàn)主機(jī)A免密登陸到主機(jī)B的root用戶凉袱,如果想讓主機(jī)B也免密登錄到主機(jī)A,創(chuàng)建密鑰和拷貝步驟相同。
密鑰登陸的方式只能登錄被登錄機(jī)中 .ssh 目錄下有對應(yīng)公鑰的用戶专甩,如果想讓所有用戶都可以被登錄則需要將authorized_keys文件的內(nèi)容追加到其他用戶的 ~/.ssh/authorized_keys 文件中钟鸵。
如果使用自己創(chuàng)建的authorized_keys文件進(jìn)行復(fù)制公鑰則要嚴(yán)格設(shè)置權(quán)限,權(quán)限不正確會導(dǎo)致文件無法使用涤躲,也就無法進(jìn)行密鑰驗證携添。