需求

为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录。但是很多时候为了操作方便,我们都通过设置SSH免密码登录。
在这里我对本地机器Cloud10和目标机器Cloud11、Cloud12进行免密登录

大致的三步

1.本地机器生成公私钥
2.上传公钥到目标机器
3.测试免密登录

具体操作

1.准备工作

  • 使用root权限分别修改每台机器的hosts,添加每台机器所对应的IP和主机名(我这里分布式集群是3台机器组成的,所以配置3台,习惯将自己的ip和主机名放在第一行)
    sudo vim /etc/hosts 删除文件里内容后添加如下内容
  • ssh免密登录提示yes ssh 免密登录_主机名


  • 查看本地机器的隐藏文件 .ssh
    ll -a
  • ssh免密登录提示yes ssh 免密登录_图文展示SSH免密登录的具体步骤_02

  • 2.在本地机器用ssh-keygen 生成一个公私钥对
    在ssh目录下进行,输入三个回车
    进入.ssh目录 cd .ssh
  • 发起公钥请求 ssh-keygen -t rsa
  • ssh免密登录提示yes ssh 免密登录_用户名_03


  • 在.ssh/目录下,会新生成两个文件:id_rsa.pub和 id_rsa

ssh免密登录提示yes ssh 免密登录_主机名_04


3.上传公钥到目标机器

ssh-copy-id hduser@192.168.157.146ssh-copy-id hduser@Cloud12

注意:(@前边是接受公钥机器的用户名,后边是接受放的ip,因为配置了映射所以ip可以用主机名代替)

ssh免密登录提示yes ssh 免密登录_ssh免密登录提示yes_05


ssh免密登录提示yes ssh 免密登录_这样进行SSH的免密登录_06

  • 查看远程从节点主机上是否接收到 authorized_keys文件
  • 这个时候Cloud10的公钥文件内容会追加写入到Cloud11的 .ssh/authorized_keys
    文件中查看Cloud11下的authorized_keys文件与Cloud10下的id_rsa.pub中内容是一样的,如下图所示
  • 重启 SSH服务命令使其生效:(3台机器都要重启)
    sudo service sshd restart另外我们要注意, .ssh目录的权限为700,其下文件authorized_keys和私钥的权限为600。否则会因为权限问题导致无法免密码登录。我们可以看到登陆后会有known_hosts文件生成。
    chmod -R 700 .ssh/sudo chmod 600 .ssh/authorized_keys4.测试免密登录
    使用IP免密登录(用户名相同时,ssh+主机名;如果不同,登录方式就是 ssh+用户名@IP地址)
    ssh Cloud10ssh Cloud11ssh Cloud12
  • 退出免密登录
    exit

注意事项

  • 免密码登录的处理是用户对用户的,切换其他用户后,仍然需要输入密码
  • 远程机器的.ssh目录需要700权限,authorized_keys文件需要600权限
    否则配置是不成功的(每次登录都得重新去输入密码的)