在登錄遠(yuǎn)程開發(fā)機(jī)要一直輸入登錄密碼挺讓我厭煩的丽啡,因此搞下免密登錄造虎,順便了解下ssh的原理巡莹。
如何設(shè)置免密登錄
- 在本地使用命令
ssh-keygen -t rsa
生成公鑰id_rsa
和私鑰id_rsa.pub
文件兵迅,生成的文件在目錄~/.ssh/
下泰讽; - 將公鑰通過
scp
(或其他發(fā)生)復(fù)制公鑰文件id_rsa.pub
到遠(yuǎn)程開發(fā)機(jī)上例衍; - 通過命令
cat id_rsa.pub >> ~/.ssh/authorized_keys
添加到文件authorized_keys
上,確保該文件的權(quán)限為可讀可寫已卸; - 現(xiàn)在可以免密登錄遠(yuǎn)程開發(fā)機(jī)了佛玄。
ssh登錄原理
ssh的登錄原理其實(shí)就是利用非對(duì)稱公私鑰來驗(yàn)證身份
ssh密碼登錄
- 客戶端A像服務(wù)器B發(fā)起ssh連接;
- 服務(wù)器B將自己的公鑰發(fā)送給客戶端A(客戶端會(huì)將該信息記錄到文件
~/.ssh/known_hosts
累澡,下次會(huì)將服務(wù)器給的公鑰和記錄的進(jìn)行比較梦抢,不一致就會(huì)發(fā)出警告); - 客戶端A將用戶名和密碼通過服務(wù)器B的公鑰進(jìn)行加密愧哟,發(fā)送給服務(wù)器B;
- 服務(wù)器B利用自身的私鑰對(duì)客戶端A發(fā)送的數(shù)據(jù)進(jìn)行解密奥吩,并驗(yàn)證用戶名和密碼是否正確。
ssh密鑰登錄
- 客戶端A發(fā)起ssh連接并將用戶名等信息發(fā)送給服務(wù)器B蕊梧;
- 服務(wù)器B在本地文件
authorized_keys
是否有客戶端A的公鑰文件霞赫; - 如果存在公鑰文件,那么服務(wù)器B會(huì)生成一個(gè)隨機(jī)字符串望几,并用客戶端A的公鑰文件進(jìn)行加密绩脆,發(fā)送給客戶端A;
- 客戶端A用自己的私鑰進(jìn)行解密橄抹,并將解密結(jié)果發(fā)送給服務(wù)器B靴迫;
- 服務(wù)器B將客戶端A解密的結(jié)果跟之前生成的字符串進(jìn)行比較,若相同楼誓,則允許直接登錄玉锌。