Ubuntu ssh免密登錄


ssh免密登錄工作原理
server A免登錄到server B: 
1.在A上生成公鑰私鑰。 
2.將公鑰拷貝給server B,要重命名成authorized_keys(從英文名就知道含義了) 
3.Server A向Server B發送一個連接請求。 
4.Server B得到Server A的信息后,在authorized_keys中查找,如果有相應的用戶名和IP,則隨機生成一個字符串,並用Server A的公鑰加密,發送給Server A。 
5.Server A得到Server B發來的消息后,使用私鑰進行解密,然后將解密后的字符串發送給Server B。Server B進行和生成的對比,如果一致,則允許免登錄。 
總之:A要免密碼登錄到B,B首先要擁有A的公鑰,然后B要做一次加密驗證。對於非對稱加密,公鑰加密的密文不能公鑰解開,只能私鑰解開。
注意:上述只能實現單向免密登錄
 
接下來配置相互免密登錄:
其關鍵點在,收集所有主機的公鑰將其共享到master的authorized_keys文件中,然后再用scp復制到各個主機的.ssh文件夾下
 
 

0、給所有沒安裝ssh的主機安裝ssh

   sudo apt-get install ssh
   sudo apt-get install rsync
 
        
1、修改master的配置文件  gedit /etc/hosts
給每個需要互聯的機器設置IP地址 和 名稱(每台機中自行修改)
如127.0.0.1 localhost
192.168.137.129 master
192.168.137.130 slave1
192.168.137.131 slave2
2、給每個主機生成公鑰和秘鑰
  ssh-keygen –t rsa   -->直接回車生成的密鑰對:id_rsa和id_rsa.pub,
  默認存儲在"/home/hadoop/.ssh"目錄下。

  先設置第六步

3、
master 先將自身的公鑰加到key中去,之后將所有slave機上的公鑰發給master機
  master中: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  slave1中: scp ~/.ssh/id_rsa.pub root@master:~/id_rsa.pub 
  先發slave1,執行第4步后,再發slave2
 
        
4、把slave追加到授權的key里面去。

   master 中: cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 

  rm ~/id_rsa.pub  %刪掉已經合並的公鑰。

  有別的機子再執行第三步

 

5、修改master中key的權限

     chmod 600 ~/.ssh/authorized_keys

 

6、修改每台機子的配置文件 gedit /etc/ssh/sshd_config

將圖片中提示的那三行上面的permitRootLogin 改成 yes 這樣就可以連接遠程的root用戶(在需要連的那台機子上 改)

Ubuntu ssh免密登錄 - LazyJoJo - LazyJoJo的博客

    service sshd restart -->重啟ssh服務

7、將key傳到每個slave機中

  master: scp ~/.ssh/authorized_keys root@slave1:~/.ssh/authorized_keys

  (scp ~/.ssh/authorized_keys  遠程用戶名@主機名或IP:      %scp用法)

  重復直到所有機子的key都一樣

  給每個機子的.ssh 文件夾權限 :chmod 700 ~/.ssh

8、測試連接

  ssh slave1 -->連接用戶

   exit   -->退出連接用戶

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM