先说下事情的起因,手贱删掉了~/.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

最新文章

  1. Objective-C基础2
  2. Spring异常抛出触发事务回滚
  3. 关于《精通移动App测试实战:技术、工具和案例》图书勘误信息
  4. jQuery+Superfish制作下拉菜单
  5. 异步http框架简介&实现原理
  6. iOS7 下去掉状态栏(全屏)
  7. hdu 4593 Robot
  8. ubuntu安装python3
  9. 3月7日 Maximum Subarray
  10. Open Phone, SMS, Email, Skype and Browser apps of Android in Unity3d
  11. MyBatis(3.2.3) - Handling the CLOB/BLOB types
  12. clone Control event handlers at run time
  13. DataTable的一些使用技巧
  14. 【SSH三个框架】Hibernate第七基金会:不少下属业务
  15. SpringCloud微服务如何优雅停机及源码分析
  16. [matlab] 6.粒子群优化算法
  17. Linux 01 计算机系统硬件组成简介
  18. 第七十九课 最短路径(Floyd)
  19. 【转】构造自己的DIB类
  20. 利用ML&AI判定未知恶意程序——里面提到ssl恶意加密流检测使用N个payload CNN + 字节分布包长等特征综合判定

热门文章

  1. hibernate连接mysql,自动建表失败
  2. Socket和ServerSocket学习笔记
  3. css中文本超出部分省略号代替
  4. 九大排序算法Java实现
  5. ACM-ICPC 2018 南京赛区网络预赛 Sum
  6. JAVA程序打包成exe文件详细图解
  7. UVa 12265 贩卖土地 单调栈
  8. rtp包格式
  9. measure time program
  10. vs附加到进程报MSVSMON.EXE未在远程计算机启动错误