ssh 無密碼登錄要使用公鑰與私鑰。linux下可以用用ssh-keygen生成公鑰/私鑰對,下面我以Ubuntu為例。
有機器A(10.0.2.1),B(10.0.2.100)。現想A通過ssh免密碼登錄到B。
首先以kube賬戶登陸為例。
1.在A機下生成公鑰/私鑰對。
ssh-keygen -t rsa -P ''
-P表示密碼,-P '' 就表示空密碼,也可以不用-P參數,這樣就要三車回車,用-P就一次回車。
該命令將在~/.ssh目錄下面產生一對密鑰id_rsa和id_rsa.pub。
如果在生成過程中指定了文件路徑和文件名,例如~/.ssh/k8s_rsa, 則生成~/.ssh/k8s_rsa和~/.ssh/k8s_rsa.pub兩個文件
2.public key復制到B機
把A機下的~/.ssh/k8s_rsa.pub 復制到B機的 ~/.ssh/authorized_keys文件里,先要在B機上創建好 ~/.ssh 這個目錄,用scp復制。
scp ~/.ssh/k8s_rsa.pub kube@10.0.2.100:~/.ssh/authorized_keys
由於還沒有免密碼登錄的,所以要輸入一次B機的root密碼。
3.authorized_keys的權限要是600!!!
sudo chmod 600 ~/.ssh/authorized_keys
4. 免密登陸到B機
ssh -i ~/.ssh/k8s_rsa.pub kube@10.0.2.100
5. 將private加入ssh-agent
ssh-add k8s_rsa
注意事項:
如果產生密鑰對名稱為id_rsa和id_rsa.pub,則在登陸時不需要使用 -i 參數指定私鑰。
第一次登陸時會需要輸入yes, 將遠程主機加入 known hosts中