您的位置:首页 > 运维架构 > Linux

配置SSH免密码登录案例

2017-06-28 11:45 579 查看
在搭建Hadoop集群时,经常需要设置多个节点之间的免密码登录,今天把这个操作完整的整理出来,以便事后参考

总体思路:

1.在集群各节点上产生公匙和私匙

2.把公匙copy到需要免密码登录的节点上

我们用两个节点来举例:node1和node2,想要实现从node2免密码登录到node2, 在node2上创建ssh公钥和私钥,然后把nod2的ssh公钥copy到node1即可,下面是具体步骤

一、查看node2 上的ssh服务是否正常

执行sercice sshd status



sshd是ssh服务的进程名称

其实应该确保集群中各个节点上的ssh服务都是运行正常的,这里只是做演示因此木有列出来。

二、创建node2的公钥和私钥

执行ssh-keygen  -t  rsa 

执行这个命令时,会提示让用户输入些内容,这里不用输入任何信息,直接全部按回车键即可



下面查看下创建好的公钥和私钥

ll ~/.ssh



可以看到已经在~/.ssh目录下创建好了两个文件id_rsa和id_rsa.pub,分别是私钥和公钥。

ssh创建好的私钥和公钥会保存到当前用户的~/.ssh隐藏目录下面,

如果是root目录,那么保存在

/root/.ssh/目录

如果是其他用户,假设是zhangsan ,保存在

/home/zhangsan/.ssh/目录

三、把node2的公钥copy到node1

我们首先在node1上查看下~/.ssh目录的情况



在上图中我们可以看到node1的ssh服务运行正常并且~./ssh目录下目前是空的。

我们切换到node2,准备把node2的公匙copy到node1



上图是具体的执行过程,使用黄色方框在图上做了标记分成了3部分,在黄色方框上方,用ll命令查看node1的~/.ssh目录下目前有两个文件id_rsa和id_rsa.pub,分别是私钥和公钥。当执行了ssh-copy-id node1之后,会提示用户是否继续,输入yes即可,然后会要求输入node1的登录密码。我已经在集群中设置了每个节点的/etc/hosts里面设置IP和主机名的映射关系,因此我这里可以用host名称,如果没有设置的话,可以直接用IP也可以。

当copy公匙完成后,node1的~/.ssh目录下会产生出一个新的文件known_hosts,里面其实是node1 目前可以识别的主机登录信息,这个文件内容随着当前主机免密码登录到不同的主机,里面的内容会随之增加

三、在node1上确认免密码登录

我们切换到node1,查看~/.ssh目录



可以发现在node1的~/.ssh目录下已经产生出了一个authrized_keys文件

下面我们测试在node2上用ssh登录到node1



在ndoe2上直接执行 ssh node1,可以发现不用输入密码即可登录成功,然后输入了logout退出了登录返回到node1.

现在已经完成了从node2免ssh密码登录到node1的全部操作了。

那么如果是在单个节点上配置伪分布式还需要配置ssh免密码登录吗?经过验证,答案是:需要

虽然上面写了很多,其实总结下来就一句话:如果想要实现从A免SSH密码登录B,那么就把A的公钥放到B上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop ssh linux