如果沒有安裝SSH服務,通過命令安裝:
sudo apt-get install ssh
啟動SSH服務:
service sshd restart
SSH無密碼登入的原理如下
假設A機器想要通過SSH無密碼登入訪問B機器,則需要在A機器上產生一對秘鑰(公開金鑰+私密金鑰),而後將公開金鑰複製到B機器上;
當A機器通過SSH連結B機器時,B機器就會產生一個隨機數,並且使用A機器的公開金鑰(通過上一步拷貝,B機器上有A機器公開金鑰的拷貝)對隨機數進行加密,並把加密的“密文”回送給A機器;
A機器收到密文後,用自己的私密金鑰解密,把解密後的“明文”(其實就是那個隨機數)再回送給B機器;
B機器收到A機器發過來“明文”後,與自己擁有的那一份比對確認,當確認通過後允許A機器連結自己;
(整個過程是個公開金鑰認證過程,無需密碼輸入,從SSH協議角度講,A是用戶端,B是伺服器端)
所以,問題的關鍵就是,如何在A機器上產生金鑰組,並且把公開金鑰發到B機器。
配置步驟
第一:在A機器產生秘鑰對
ssh-keygen -t rsa
則在/root/.ssh/目錄下會有兩個檔案:id_rsa與id_rsa.pub
第二:把id_rsa.pub拷貝到本目錄下一個名叫authorized_keys的檔案
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
第三:分別設定.ssh目錄和 authorized_keys檔案的許可權
chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
上面操作完成後,則完成了A機器到本機(A機器)的SSH密碼登入,現在要使A無密碼SSH登入B,
第四:在B機器建立.ssh目錄與authorized_keys檔案,並且雷同第三步修改許可權
第五:通過scp把A機器上的id_rsa.pub拷貝到B機器,並且追加到B機器的authorized_keys檔案下
(完成上面步驟,則完成了A機器到B機器的無密碼SSH登入)
當在一個由多台機器組成的叢集中,我們想每兩兩之間都能實現SSH無密碼登入,則可以規划上面的產生流程:
第一:在所有機器上產生秘鑰對;
第二:迭代把自己的id_rsa.pub拷貝到其他機器,並且追加到authorized_keys檔案;