先说下事情的起因,手贱删掉了~/.ssh下的所有文件,包括authorized_keys,id_rsa,id_rsa.pub,以及known_hosts。其实,这四个文件本来就是没有的,id_rsa和id_rsa.pub是存储私钥和公钥的文件,通过命令生成。
ssh-keygen

删除了所有文件之后,再ssh Slave2(远程主机名)就提示以下消息:

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf::ae::0b:c8::6f::a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)?

回车确认之后,提示如下:

Host key verification failed

”主机密钥验证失败“。

方法1:参考

在.ssh/config(或者/etc/ssh/ssh_config)中配置:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

直接写到配置文件中。另外还有一种方法就是每次连接的时候使用“StrictHostKeyChecking no”,也就是以下的方法2.

方法2:

解决方法如下,虽然不一定是最好的,但是确实是解决了我的问题。

在Master端输入如下命令:

ssh -o "StrictHostKeyChecking no" hadoop@Slave2

hadoop是Master端用户名,Slaver2是本地hosts文件里保存的远程主机名,也可以跟目的主机的名字不同,只要hosts文件里可以根据这个名称映射到IP就可以,实质还是通过IP访问的。

然后就可以ssh密码登录Slave2了,切换到Master端执行以下命令首先将Master的公钥传输到Slave2端,然后将其插入到authorized_keys文件中(插入的时候创建了这个文件)

scp ~/.ssh/id_rsa.pub hadoop@Slave2:/home/hadoop/(这只是传递文件,传递文件夹的话使用scp -r)

从Master使用ssh登录Slave2,执行以下命令:

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

然后ssh Slave2,结果提示如下信息,仍然需要使用密码登录Slave2:

Agent admitted failure to sign using the key.

解决方法就是在Master端执行如下命令:

 ssh-add   ~/.ssh/id_rsa 

以上方法就解决了删除了.ssh目录下所以文件之后无密码登陆远程主机的问题。

2)有时候会有如下提示:

Offending key for IP in /home/hadoop/.ssh/known_hosts:
Matching host key in /home/hadoop/.ssh/known_hosts:
Are you sure you want to continue connecting (yes/no)?
Host key verification failed.

原因是: ssh会把你每个你访问过计算机(例如从Master访问Slave1)的公钥(public key)都记录在~/.ssh/known_hosts(将Slave1的公钥记录在Master的此文件里)。当下次访问相同计算机时(Slave1),OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。我在上面列出的情况,就是这种情况。

解决方法:

sed -i '5d' ~/.ssh/known_hosts

因为提示第5行触发了问题,所以删除第五行。

参考:

http://superuser.com/questions/125324/how-can-i-avoid-sshs-host-verification-for-known-hosts

http://www.cnblogs.com/dlutxm/archive/2011/10/14/2212019.html

http://askubuntu.com/questions/45679/ssh-connection-problem-with-host-key-verification-failed-error

ssh的原理可参考以下博文:

http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

踩的ssh坑的更多相关文章

  1. 项目中踩过的坑之-sessionStorage

    总想写点什么,却不知道从何写起,那就从项目中踩过的坑开始吧,希望能给可能碰到相同问题的小伙伴一点帮助. 项目情景: 有一个id,要求通过当前网页打开一个新页面(不是当前页面),并把id传给打开的新页面 ...

  2. web开发实战--弹出式富文本编辑器的实现思路和踩过的坑

    前言: 和弟弟合作, 一起整了个智慧屋的小web站点, 里面包含了很多经典的智力和推理题. 其实该站点从技术层面来分析的话, 也算一个信息发布站点. 因此在该网站的后台运营中, 富文本的编辑器显得尤为 ...

  3. "开发路上踩过的坑要一个个填起来————持续更新······(7月30日)"

    欢迎转载,请注明出处! https://gii16.github.io/learnmore/2016/07/29/problem.html 踩过的坑及解决方案记录在此篇博文中! 个人理解,如有偏颇,欢 ...

  4. 【转载】Fragment 全解析(1):那些年踩过的坑

    http://www.jianshu.com/p/d9143a92ad94 Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使 ...

  5. Redis Cluster踩过的坑

    Redis Cluster踩过的坑请参考如下链接:http://www.iteye.com/blogs/subjects/Redis_Cluster_Devops

  6. 第八篇:web之前端踩的一些坑

    前端踩的一些坑   前端踩的一些坑 本节内容 事件代理 清除标签的所有事件 bootstrap的模态框自定义方法 ajax在django里面实现post提交 ajax提交数据嵌套 1.事件代理 之前写 ...

  7. 使用ffmpeg视频编码过程中踩的一个坑

           今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果:                   ...

  8. 那些年踩过的坑之:first-child伪类选择器

    原文:那些年踩过的坑之:first-child伪类选择器 :first-child 选择器用于选取属于其父元素的首个子元素的指定选择器.——w3school 嗯,乍一看好像说的不是很明白,因此这个选择 ...

  9. 《C++之那些年踩过的坑(二)》

    C++之那些年踩过的坑(二) 作者:刘俊延(Alinshans) 本系列文章针对我在写C++代码的过程中,尤其是做自己的项目时,踩过的各种坑.以此作为给自己的警惕. 今天讲一个小点,虽然小,但如果没有 ...

随机推荐

  1. TCP ------ TCP四次挥手(断开连接)及断开过程

    1.正常情况下,调用close(),产生的其中一个效果就是发送FIN,只有双方都调用close(),才会出现正常的四次挥手. 2.如果是服务器,发起四次挥手是在关闭accept()返回的套接字,而不是 ...

  2. 随机洗牌算法Knuth Shuffle和错排公式

    Knuth随机洗牌算法:譬如现在有54张牌,如何洗牌才能保证随机性.可以这么考虑,从最末尾一张牌开始洗,对于每一张牌,编号在该牌前面的牌中任意一张选一张和当前牌进行交换,直至洗到第一张牌为止.参考代码 ...

  3. 【UOJ131/NOI2015D2T2-品酒大会】sam求后缀树

    题目链接:http://uoj.ac/problem/131 题意:给出一个字符串,第i个字符对应的值为a[i], 对于i∈[0,n),求最长公共前缀大于等于i的字串对个数,并求这些字符串对开头对应值 ...

  4. viewDidLoad方法的调用顺序

      https://www.evernote.com/shard/s227/sh/01307822-de66-448d-8bac-7954f01ffc64/185b44c2bf5b6e266f4bed ...

  5. Kali 1.0 / 2.0 安装中文输入法(谷歌pinyin + 其他)

    1.kali默认是没有中午输入法的,需要自己安装一下 2.首先我们先获取root权限 dnt@HackerKali:~$ su密码: 3.安装中文输入法(apt-get 指令不会的同学可以学习一下基础 ...

  6. bzoj 1041 数学推理

    原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1041 我们只需要求第一象限内(不包括坐标轴)的点数然后ans=ans*4+4就好了 首先我 ...

  7. 全局axios默认值 和 自定义实例默认值

    首先说了一下情况, 登录后成功返回token 然后在带着token去继续下面的请求, 奇怪的是都是当前页面起作用,刷新和跳转之后就token 就消失了. 查了 axios文档发现 被自己坑了 我设置了 ...

  8. bootstrap——集合

    1.<nav class="navbar navbar-inverse"> inverse,反色,原导航条为白色,加-inverse后改为黑色   2.data-tog ...

  9. POJ2680(动态规划,大数)

    Computer Transformation Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4548   Accepted ...

  10. HDU1143(3*N的地板铺1*2的砖)

    Tri Tiling Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...