原理
雙向,顧名思義,雙方互通,此處的意思是多台 linux 兩兩免密登錄。雙向比單向多了些操作,單向只需把某一個linux的公鑰發送給其他linux即可,而雙向要實現集群中的每一台機器都保存其他所有機器的公鑰。
步驟
假設,你有兩台機器,ip分別為A和B:
總共分為三步:
- 生成公鑰
- 將A機器的公鑰拷貝至B機器
- 將B機器的公鑰拷貝至A機器
生成公鑰
如下命令生成公鑰,默認會在~/.ssh/下生成id_rsa和id_rsa.pub。先檢查一下機器是否已有公鑰,如果沒有再執行:
ssh-keygen -t rsa
-t 指定算法
-f 指定生成秘鑰路徑
-N 指定密碼
拷貝公鑰
cd ~/.ssh
scp id_rsa.pub root@B:/root/.ssh/authorized_keys #此命令在A機器執行,目的將公鑰發送至B機器
scp id_rsa.pub root@A:/root/.ssh/authorized_keys #此命令在B機器執行,目的將公鑰發送至B機器
scp: 加密的方式在本地主機和遠程主機之間復制文件
參數:
- 源文件:指定要復制的源文件。也可以是遠程地址
- 目標文件:目標文件。格式為
user@host:filename(文件名為目標文件的名稱)。
驗證
ssh B #在A機器上,看是否免密登陸B
ssh A #在A機器上,看是否免密登陸B
如果發現設置免密登陸,還需要輸入密碼,那么檢查一下/root .ssh authorized_keys目錄和文件的權限。
chmod 600 authorized_keys
chmod 700 .ssh
如果authorized_keys文件、$HOME/.ssh目錄 或 $HOME目錄讓本用戶之外的用戶有寫權限,那么sshd都會拒絕使用 ~/.ssh/authorized_keys 文件中的key來進行認證的。
