Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171861
  • 博文数量: 40
  • 博客积分: 888
  • 博客等级: 准尉
  • 技术积分: 396
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-01 10:17
文章分类
文章存档

2013年(10)

2012年(10)

2011年(11)

2010年(9)

分类: LINUX

2013-05-06 19:26:46

前言:当我们在Linux下编写shell同步脚本时,涉及到服务器与服务器之间的交互,中间出现的密码验证环节会令人头疼些,不过还是可以通过第三方的开源工具expect(包含命令expectspawnsend等)编写密码自动输入脚本解决。本文提供的解决办法是:通过ssh-keygen的密钥进行身份校验,免去输入密码的烦恼,方便脚本的编写。

当使用hadoop是需要机器之间ssh 不需要密码登录,下面介绍一下不需要密登录的做法:

场景:设置A服务器(19.x.xx.21)免密码登陆到B服务器(19.x.xx.22)

1) 在A上执行命令:ssh-keygen -b 1024 -t rsa,中间要求输入的时候狂按回车(Enter)就可以了

2) 此时会在~/.ssh2/目录下生成两个密钥文件,它们分别是私钥id_rsa_1024_a和公钥id_rsa_1024_a.pub,为了方便查看和区别对待,重命名之,例如我是这样操作的:

cd ~/.ssh2/

mv id_rsa_1024_a root_19.x.xx.21_a

mv id_rsa_1024_a.pub root_19.x.xx.21_a.pub

3) 把私钥root_19.x.xx.21添加到A服务器的身份验证列表(identification文件)中:

echo "IdKey root_19.x.xx.21_a" >> ~/.ssh2/identification

4) 把公钥root_19.x.xx.21_a.pub上传到B服务器的~/.ssh2/目录下,这里具体的方法就不作多说明了,可以使用rz/sz、scp等等(需要注意的是:此时如果使用scp命令等,还是需要密码验证的)

5) 把公钥root_19.x.xx.21_a.pub添加到B服务器身份验证列表(authorization文件)中:

echo "Key root_19.x.xx.21_a.pub" >> ~/.ssh2/authorization

6) 此时再从A服务器ssh或者scp到B服务器,就可以不用输入密码了

如果想要从B到A也没有密码:
那就在B机器上执行

echo "IdKey root_19.x.xx.21_a" >> ~/.ssh2/identification

在A机器上执行:
echo "Key root_19.x.xx.21_a.pub" >> ~/.ssh2/authorization


为了两个互相不需要密码:
就直接在两台机器是那个都执行这个:
echo "IdKey root_19.x.xx.21_a" >> ~/.ssh2/identification
echo "Key root_19.x.xx.21_a.pub" >> ~/.ssh2/authorization


总结一点:
ssh的源机器要增加 密钥 echo "IdKey root_19.x.xx.21_a" >> ~/.ssh2/identification;
目的机器要增加公钥echo "Key root_19.x.xx.21_a.pub" >> ~/.ssh2/authorization

阅读(1569) | 评论(0) | 转发(0) |
0

上一篇:【mysql】mysql innodb 配置详解

下一篇:没有了

给主人留下些什么吧!~~