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   -->退出连接用户

 

posted @ 2017-02-18 17:18  LazyJoJo  阅读(2213)  评论(0编辑  收藏  举报