centos 7 ssh免密码登录

参考(十分详细):http://blog.csdn.net/newstruts/article/details/46424191

目的

在搭建Linux集群服务的时候,主服务器需要启动从服务器的服务,如果通过手动启动,集群内服务器几台还好,要是像阿里1000台的云梯hadoop集群的话,轨迹启动一次集群就得几个工程师一两天时间,是不是很恐怖。如果使用免密登录,主服务器就能通过程序执行启动脚步,自动帮我们将从服务器的应用启动。而这一切就是建立在ssh服务的免密码登录之上的。所以要学习集群部署,就必须了解linux的免密码登录。

原理

     使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是

首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)

然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥

当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了


新手必读

  1. 1)配置免登录前,请确保网络环境达到要求(后续内容有详细说明)  
  2. 2)免登录其实是在本机生成两把锁,一把所谓的公钥是放到要登录的那台服务器上的,其实是一串文本。  
  3. 3)被登录的服务器上只会有一个公钥文件,叫authorized_keys。如果被登录的服务器有多个客户端要连上来,就会把每个文本密钥存成一行。  
  4. 4)客户端发送到服务器端的密钥文件一定要放到登录用户主目录的~/.ssh这个隐藏目录下,  
  5. 比如用hadoop用户登录到192.168.102.248服务器,如果hadoop的主目录是/home/hadoop,那么,密钥文件一定是在/home/hadoop/.ssh/下  
  6. 5)如果直接将authorized_keys的文件从客户端通过scp或者ssh-copy-id方式发送到服务器端,会覆盖原来的文件,对其他用户有影响,所以发送时要进行改名后合并,

准备工作

1、修改/etc/hosts的服务器ip映射(每台服务器都要做ip映射)

192.168.153.129 hadoop1
192.168.153.130 hadoop2
192.168.153.136 hadoop3

修改后,最好重启下服务器,然后服务器名称应该也会变成root@hadoop1


2、生成rsa公私钥

比如在hadoop1机器上生成公私钥

注:必须在用户目录下的.ssh文件夹下生成公私密钥

这里都是用root用户做ssh免密登录,所以对应路径是/root/.ssh

cd /root/.ssh

执行以下命令后,如果提示,就一直按“Enter”键,直至生成公钥

ssh-keygen -t rsa
centos 7 ssh免密码登录_第1张图片

执行完成后会生成两个文件id_rsa、id_rsa.pub

3、把公钥复制到需要免密登录的服务器hadoop2

id_rsa.pub文件就是公钥,执行命令复制到hadoop2

scp id_rsa.pub root@hadoop2:/root/.ssh/authorized_keys_from_hadoop1

hadoop2上/root/.ssh/authorized_keys_from_hadoop1文件的内容就是id_rsa.pub的内容


4、把hadoop1的公钥内容进行公钥合并

1. 登录到要被登录的服务器()进入./ssh目录  
   cd root/.ssh  
2. 将客户端发送来的公钥文件进行合并  
   cat authorized_keys_from_hadoop1 >> authorized_keys  
   说明:如果authorized_keys不存在就会自动创建,如果存在就会追加 

5、验证

 
 配置免登录完成后,在本机中输入“ssh root@hadoop2” 或者 “ssh [email protected]” 。  
    * 如果无需输入密码,则表示配置免登录成功。  
    * 如果仍需要输入密码,则可能是.ssh目录和文件权限需要修改。



你可能感兴趣的:(linux)