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

Linux下实现SSH免密码登录

2017-04-27 09:17 260 查看
一般Linux服务器之间通过SSH(Secure Shell)进行通讯,端口为22,在登录别的服务器(或自己)时需要输入密码,包括在Linux上搭建Hadoop伪分布启动Hadoop时需要一直输入密码。如下所示



很麻烦,一般会设置SSH免密码登录。

准备工作:

准备两台Linux服务器,hostname和IP分别为:itcast01:192.168.8.88;itcast02:192.168.8.99 。并保证相互之间能ping通(网络通畅)。

第一步:连接本机(不要小看连接本机,连接本机也是需要输密码的,在搭建hadoop时经常会用到)

使用itcast01,在根目录下 :ls -al 可以发现由个.ssh的隐藏文件。



查看.ssh文件夹可以发现是空的。



接下来我们连接itcast02。



可以看到我们首次连接itcast02:192.168.8.88,会提示我们第一次连接,键入yes后输入密码,连接成功。

exit退出后,我们可以看见在itcast01的.ssh目录下多出了个known_hosts文件夹,查看后我们可以看出是对前面连接的itcast02的一个记录,再次连接时便是直接输入密码即可



好了,接下来我们便实现免密码登录。

首先需要在.ssh目录下生成秘钥和公钥:在.ssh目录下键入:ssh-keygen -t rsa(-t rsa表示:生成的算法选择为rsa)。



可以看出生成了一个公钥(id_rsa.pub)和一个秘钥(id_rsa)

接下来,在.ssh文件夹下创建cp id_rsa.pub authorized_keys



可以看出,该操作是在.ssh文件夹下创建authorized_keys (注意,文件的名称必须是:authorized_keys,而且是个文件,不是个文件夹) ,并将公钥中的信息复制进去。



这时候我们可以发现,itcast01自登陆时就可以免密码登陆了。

第二部:实现不同机器之间的免密码登录

接下来实现不同Linux服务器之间的免密码登录。

当然,ssh提供了指令来实现这一系列操作: ssh-copy-id xxxxxx即将自己的公钥发到指定机器的.ssh文件夹下的authorized_keys文件(没有则自动创建)



在键入密码后连接成功。



这时候,我们可以发现在itcast02的.ssh下的authorized_keys文件中存在了itcast01的公钥信息。

如此则实现了itcast01免密码登录到itcast02的目的,但这时候itcast02却不能免密码登录itcast01,



原因是,itcast01的authorized_keys文件中没有itcast02的公钥,要实现itcast02免密码登录itcast01,其操作和itcast01登录itcast02相同。

第三步:了解原理

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop ssh linux 密码 shell