取消SSH连接中的StrictHostKeyChecking

默认配置的问题

SSH 连接远程主机时,会检查主机的公钥。如果是第一次该主机,会显示该主机的公钥摘要,提示用户是否信任该主机:

The authenticity of host ‘192.168.0.110 (192.168.0.110)‘ can‘t be established.
RSA key fingerprint is a3:ca:ad:95:a1:45:d2:57:3a:e9:e7:75:a8:4c:1f:9f.
Are you sure you want to continue connecting (yes/no)?

当选择接受,就会将该主机的公钥追加到文件 ~/.ssh/known_hosts 中。当再次连接该主机时,就不会再提示该问题了。 如果因为某种原因(服务器系统重装,服务器间IP地址交换,DHCP,虚拟机重建,中间人劫持),该IP地址的公钥改变了,当使用 SSH 连接的时候,会报错:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
e9:0c:36:89:7f:3c:07:71:09:5a:9f:28:8c:44:e9:05.
Please contact your system administrator.
Add correct host key in /home/jiangxin/.ssh/known_hosts to get rid of this message.
Offending key in /home/jiangxin/.ssh/known_hosts:81
RSA host key for 192.168.0.110 has changed and you have requested strict checking.
Host key verification failed.

上面的警告信息说的是:服务器公钥已经改变,新的公钥的摘要是:e9:0c:36:89:7f:3c:07:71:09:5a:9f:28:8c:44:e9:05。该服务器原来的公钥记录在文件 ~/.ssh/known_hosts 中第 81 行。如果确认不是中间人劫持,需要连接到该服务器,怎么办呢?最简单的就是用 vi 打开 ~/.ssh/known_hosts 文件,定位到 81 行,将该行删除,然后就可以使用 ssh 连接了。

连接主机时不进行公钥确认

在首次连接服务器时,会弹出公钥确认的提示。这会导致某些自动化任务,由于初次连接服务器而导致自动化任务中断。或者由于 ~/.ssh/known_hosts 文件内容清空,导致自动化任务中断。 SSH 客户端的 StrictHostKeyChecking 配置指令,可以实现当第一次连接服务器时,自动接受新的公钥。只需要修改 /etc/ssh/ssh_config 文件,包含下列语句:

Host *
  StrictHostKeyChecking no

或者在 ssh 命令行中用 -o 参数

> ssh  -o StrictHostKeyChecking=no  192.168.0.110

防止远程主机公钥改变导致SSH连接失败

当确认中间人劫持***风险比较小的情况下,才可以使用下面的方法,禁用 SSH 远程主机的公钥检查。 SSH 客户端提供一个 UserKnownHostsFile 配置,允许指定不同的 known_hosts 文件。

> ssh -o UserKnownHostsFile=/dev/null 192.168.0.110
The authenticity of host ‘192.168.0.110 (192.168.0.110)‘ can‘t be established.
RSA key fingerprint is e9:0c:36:89:7f:3c:07:71:09:5a:9f:28:8c:44:e9:05.
Are you sure you want to continue connecting (yes/no)?

提示信息由公钥改变中断警告变成了首次连接的提示。 和之前提到的 StrictHostKeyChecking 配置配合使用,则不再有任何警告出现了:

> ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 192.168.0.110
Warning: Permanently added ‘192.168.0.110‘ (RSA) to the list of known hosts.
[email protected]‘s password:

如果设置了无口令 SSH 登录(即通过客户端公钥认证),就可以直接连接到远程主机。这是基于 SSH 协议的自动化任务常用的手段。

原文地址:https://blog.51cto.com/huanghai/2427870

时间: 2024-10-10 23:24:47

取消SSH连接中的StrictHostKeyChecking的相关文章

【linux杂谈】在SSH连接中,openssh如何解决'Connection refused'错误?

openssh是SSH (Secure SHell) 协议的免费开源实现.SSH协议族可以用来进行远程控制, 或在计算机之间传送文件. 这就意味着远程登陆,文件推拉特别是搭建集群后公钥的部署,经常要利用到openssh.本人之前搭建hadoop集群模式的时候,公钥投送就和ssh相关,如今搭建ansible测试环境的时候,再一次用到了ssh相关技术. 在向被管控机器投送公钥的时候,使用到了ssh-copy-id命令,但提示我connection refused.连输入密码那一步都没到,可见是直接进

linux中解决SSH连接慢问题

现在连接linux服务器一般都是使用SSH远程连接的方式.最近新装了一台服务器,发现telnet时速度很快,ping时一切也正常,但SSH连接的时候却很慢.经过网上资料查询,大致是有以下几种原因: 1.SERVER的SSHD会去DNS查找访问的CLIENT IP的HOSTNAME,如果DNS不可用或者没有相关记录,就会消耗一段时间. 2.在authentication gssapi-with-mic有时候也会消耗一段时间 一.测试查找具体原因: 1.使用ssh -v host进行debug #

如何使用 SSH 连接 VMWare 虚拟机中的 Ubuntu

环境 VMWare Player 5.0.2,Ubuntu 13.10  VMWare共有3种网络连接模式,分别是: 1. bridged(桥接模式):虚拟机将直接连接到物理局域网,使自身独立于宿主机外,从局域网路由器获取IP.这种方式虚拟OS可以和局域网中其他终端实现互访.桥接模式有一个子选项“Replicate physical network connection state.”,它的意思是如果在笔记本等移动设备上使用虚拟机的桥接模式,当宿主机在无线网络和有线网络之间进行切换时,虚拟OS的

一次在局域网中ssh连接的尝试

最近到手一台二手HP笔记本.卖我本子的是以为很漂亮的服装设计师,她因为有了一台新的Mac本所以HP本就闲置了,于是就卖给了我.本子性能跟我自己的三星本差不多,除了电池不太给力,每次开机都会提示601.我还有一个无线路由器.两台电脑装的都是ubuntu14.04 64位的系统.于是想通过无线路由器开一个LAN在两台电脑之间进行ssh连接.首先尝试ssh localhost$ ssh localhostssh: connect to host localhost port 22: connectio

window用ssh连接本机虚拟机中的ubuntu

@window用ssh连接本机虚拟机中的ubuntu 主机和虚拟机间通信,需将2台机器的IP地址设为同一网段. 1.设置虚拟机: 虚拟机–> 设置–> Hardware –> Network Adapter,在网络连接处设置为 “桥接:直接连接到物理网络”,“NAT:使用已共享的主机IP地址”处打勾. 2.window和虚拟机下ubuntu的IP地址设为同一网段Ubuntu配置和修改IP地址请看本博客相关文章Ubuntu配置和修改IP地址 3.互ping下,判断windows与linux

virtualBox中NAT网络模式下的ssh连接问题

最近在另一台电脑上更换了个虚拟机VirtualBox,这个虚拟机与Vmware使用上有很大的区别,首先这个虚拟机是免费的,其次网络配置会很简单,但习惯了Vmware的网络配置在VirtualBox中配置ssh远程操作上就遇到了不知道怎样连接了,下面就说下在virtualBox中NAT网络模式下的ssh连接问题,两个虚拟机在桥接模式下的ssh配置都是一样的,知识NAT模式下不同. ssh服务设置 yum list installed | grep openssh-server 查看是否存在ssh服

Windows命令行中使用SSH连接Linux

转自 http://www.linuxidc.com/Linux/2014-02/96625.htm 1.下载: openssh for Winodws: 免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 具体下载目录在 /2014年资料/2月/14日/Windows 7命令行下使用SSH通过秘钥登录Linux 下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm 2.安装

【笔记】处理ssh 连接后一段时间就掉线 Connection closed by foreign host

[写在前面] 写这篇博文的原因是我遇到一个"ssh 连接后一段时间就掉线 Connection closed by foreign host"的问题,因为这个压根就不是VMware.Linux操作系统及ssh问题,最后原因是因为ESET防毒软体的IDS防护导致的--,纠结了我长达半个月的时间,痛苦的经历记录下来方便后续解决其他问题时参考,也希望能给其他人一点启发. [问题场景] 开始上课的时候,在VMware中安装RHEL7.2系统,完成后按照SOP做快照.做克隆--,一切都感觉很顺利

ssh连接时去掉“The authenticity of host xx can’t be established”解决方法

但前阵子我做备份系统恢复演习时才发现,我的rsync已经很久都没有sync成功了.我本来是采用密钥交换的方式来完成ssh中的验证,但可能由于主机的Key有变化,每次ssh连接(或rsync)时就会有提示:The authenticity of host *** can’t be established ,需要输出一个“yes”的交互. 对于这个提示,我的脚本中一开始没有预知,所以没有做判断和处理(用expect也是容易处理的),所以我决定去掉这样的提示(关于宿主机的检查). 1. 使用ssh连接