SSH无密码验证登录的实现(转摘)

 

今天开始在集群中配置HADOOP,

三个节点,一个是NAME-NODE,

两个是DATA-NODE。

配置SSH无密码验证登陆时,不太成功。找了网上CASE。

原来是自建.ssh目录时,没有将权限设置为700,而AUTHORIZED_KEYS的权限要设置为600.

按以下文章配置后,一切OK。

是为记。

~~~~~~~~~~~~

http://www.2cto.com/os/201301/186673.html

1. 前期准备:

 检查是否安装了SSH服务和rsync服务(rsync是一个远程数据同步工具,可以通过LAN/WLAN快速同步多台主机之间的文件)

 rpm -qa | grep openssh 

 rpm -qa | grep rsync 

我的Centos 5.6下的显示:   www.2cto.com  

 

如果没有安装则执行一下安装:

yum install ssh 

yum install rsync 

service sshd restart 启动服务   www.2cto.com  

1. SSH无密码验证的原理

 Master作为客户端,要实现无密码公钥认证,连接到服务器Salve上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Salve上。当Master通过SSH链接到Salve上时,Salve会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Salve,Salve确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,期间不需要手工输入密码,重要的过程是将Master上产生的公钥复制到Salve上。  

2. 实际操作过程

 3.1 Master实现无密码登录Salve

 1> 以root用户登录,更改SSH的配置文件

 vi /etc/ssh/sshd_config 

 

 RSAAuthentication yes # 启用 RSA 认证

 PubkeyAuthentication yes # 启用公钥私钥配对认证方式

 AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径

 重启SSH服务: service sshd restart    www.2cto.com  

 2> 以新建用户hadoop身份登录

 su - hadoop 

 ssh-keygen -t rsa 生成密钥文件,一切按默认的方式生成,密钥文件生成后默认存放位置为/home/hadoop(你的用户名)/.ssh

 

  查看生成文件: ll .ssh 下面的这两个即为生成的密钥对

 

  将id_rsa.pub加到授权的key里面去:cat id_rsa.pub >> authorized_keys 

 

 修改authorized_keys的权限,(这一步很重要不然的话,SSH时仍然需要密码)

 chmod 600 authorized_keys 

 

  查看本机是否可以SSH无需密码登录: ssh localhost 

 

  OK , 以上证明本机登录成功。 

  接下来要做的就是将Master的公钥id_rsa.pub复制到Salve上去,并加入到授权的key中。

 scp ~/.ssh/id_rsa.pub hadoop@192.168.171.133:~/

 

  由于首次登录还没有添加认证,这次仍然会提示输入密码

  以hadoop身份登录Salve节点(注意此前意见以root身份对ssh的配置进行修改,方式同上)

 

  确认文件存在

 如果不存在.ssh 则创建文件夹.ssh,并将权限修改为700,这一步非常重要因为默认创建的.ssh文件夹的权限为700,手工创建不修改权限的话不能成功,修改权限后将该 

  id_rsa.pub添加到授权的key中:

  mkdir .ssh 

  chmod 700 .ssh 

 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 

  修改authorized_keys的权限为600

  chmod 600 ~/.ssh/authorized_keys 

  进入Master节点,检查能否登录Salve节点:

 ssh 192.168.171.133

 

  OK , 在Master上无密码登录Salve成功

3.1.2 同样在Savle上生成密钥对,并添加到Master授权中,就可以实现相互无密码登录了。

 ssh-keygen -t rsa 

 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 

 scp ~/.ssh/id_rsa.pub hadoop@192.168.171.131:~/

 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

 验证登录即可。

注意几点:  www.2cto.com  

  1> SSH的配置文件一定要修改,而且修改后要重启

  2> 认证文件一定要采用追加方式:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  3> authorized_keys文件的权限一定要修改为600

  4> .ssh的文件如果是手动创建的话权限一定要修改为700 

 

时间: 2024-10-22 21:16:59

SSH无密码验证登录的实现(转摘)的相关文章

linux下如何实现ssh无密码验证登陆

ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所有主机的防火墙处于关闭状态. 在主机A上执行如下: 1. $cd ~/.ssh 2. $ssh-keygen -t rsa  ------------------然后一直按回车键,就会按照默认的选项将生成的私钥保存在.ssh/id_rsa文件中,生成的公钥保存在.ssh/id_rsa.pub中. 3. $cp id_rsa.pub authorized_keys 这步完成后,正

ssh无密码登录问题

ssh无密码登录配置: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak vi /etc/ssh/sshd_config 重启sshd /etc/rc.d/init.d/sshd restart cat ~/id_rsa.pub >> /root/.ssh/authorized_keys chmod 644 ~/.ssh/authorized_keys ssh root@192.168.82.3 cat id_rsa.pub >> a

搭建hadoop集群为什么要设置SSH无密码登录?

问题描述 搭建hadoop集群为什么要设置SSH无密码登录? 解决方案 解决方案二:集群之间的调度需要.如:俩台服务器001和002.001执行重启的shell后002也要重启.这时候要通过ssh调用002的重启shell

如何实现 ssh 无密码登录

如何实现 ssh 无密码登录 假设你是hostA上的一个用户"aliceA",想以用户"aliceB"的身份ssh到hostB上,但又不想输入密码.那么,你可以参考这篇教程实现ssh无密码登录. 首先,你需要以用户"aliceA"的身份登录到hostA上. 然后,使用ssh-keygen生成一对rsa公私钥,生成的密钥对会存放在~/.ssh目录下. $ ssh-keygen -t rsa 接下来,使用下面的命令在目标主机hostB上的aliceB

AR系列路由器使用SSH用户验证方式为password登录路由器的典型配置_路由器、交换机

 大 | 中 | 小    SSH是Secure Shell(安全外壳)的简称,用户通过一个不能保证安全的网络环境远程登录到路由器时,SSH特性可以提供安全保障和强大的认证功能,以保护路由器不受诸如IP地址欺诈.明文密码截取等等的攻击. 使用SSH Client通过password方式登录路由器 # sysname Quidway # radius scheme system # domain system # local-user huawei             /创建本地帐号"huaw

Linux配置远程SSH无密码登录_Linux

本文实例为大家分享了jaLinux配置远程SSH无密码登录的方法,供大家参考,具体内容如下 系统:CentOS 6.8 主机1:192.168.0.177 主机2:192.168.0.178工具介绍:ssh-keygen:创建公钥和密钥 ssh-copy-id:把生成的公钥复制到192.168.0.178主机上的authorized_keys文件上, ssh-copy-id也会给远程主机的用户主目录(/home)和/root/.ssh和/root/.ssh/authorized_key设置合适的

如何设置 Ubuntu14.04 的 SSH 无密码登录

如何设置 Ubuntu14.04 的 SSH 无密码登录 大家好,今天我来向大家介绍如何在 Ubuntu12.04 上设置 SSH 的无密码登录功能.仅在工作站上有正确的(公私)密钥对以供匹配时SSH服务端才会允许你登录,反之访问将不会被允许. 正常情况下,我们需要连上SSH的控制台输入用户名及其密码才行.如果两者全部正确,我们就可以访问,反之访问被服务端拒绝.不过相比而言还有一种比用密码更安全的登录方式,我们可以在登录SSH时通过加密密钥进行无密码登录. 如果你想启用这个安全的方式,我们只需简

CentOS下SSH无密码登录的配置文件_Linux

1.确认本机sshd的配置文件(需要root权限) $ gedit /etc/ssh/sshd_config 找到以下内容,并去掉注释符"#" RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 2.如果修改了配置文件需要重启sshd服务 (需要root权限) $ /sbin/service sshd restart 配置SSH无密码登录需要3步: 1.生成公钥和私

Spark集群部署时SSH无密码登录问题

问题描述 我们是2台电脑各自装了一个VMware的虚拟机,里面是Ubuntu的系统进行操作,Spark集群一个是Master,一个是Slave1,在设置SSH无密码登陆时,Slave1把公钥发给Master时会出现:rootMaster'spassward,然后输入密码后出现:Persiondenied,pleasetryagain.这并不是密码错误的提示,而是权限不够的提示,按照网上改权限也没有效果,这是为什么需要怎么修改? 解决方案 解决方案二:不是应该将master的公钥发给slave吗解