取消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.
xxx@192.168.0.110's password:

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

#linu# #ssh# ssh远程登录 StrictHostKeyChecking 修改好配置后,重新启动sshd服务即可,命令为/etc/init.d/sshdrestart(或systemctlrestartsshd)一般使用于内网中非常信任的服务器之间的ssh连接,所以不考虑安全问题,就直接去掉了主机密钥(hostkey)的检查。也可以根据上面的理论,我们用下面免check命令登录就不会出问题了。可以使用命令删除本地中相应ip的known_hosts。还有一种方法是彻底去掉提示,修改。... 阅读详情

相关推荐

linux服务器ssh免密登陆

针对某些服务(例如:ansible、部分大数据服务等)需要访问其他服务器,输入命令的访问方式对程序来说不是很友好,所以有必要设置服务器间免密登陆。可通过ssh-keygen命令生成公钥及私钥 执行ssh-keygen命令,一路敲回车即可。 完成后,会在当前登陆用户的家目录下生成一个ssh的隐藏目录,公钥及私钥默认生成到改路径下。例如:如果是root用户的话,路径为:。 至此即可通过命令免密登陆。将公钥添加到authorized_keys文件,如果该文件不存在,则需要在公钥目录下手动创建一个authorize

qq_33598184的博客 6560

ssh StrictHostKeyChecking

前言 我们在写 shell 脚本的时候通常会需要用 ssh 登录到远程服务器执行一些命令。 这个时候就懵逼了,我 ssh 直接执行过去了,怎么去应答这个询问啊。 这个时候就需要知道 ssh 有一个非交互方式登录 StrictHostKeyChecking 主机公钥确认 StrictHostKeyChecking StrictHostKeyChecking=no 最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网测试时建议使用。如果连接server的key在本地不存在,那么就自动添加到文件中(

大叶子不小的博客 6067

Java SSH连接实战:从JSch基础到生产级应用全解析

SSH(Secure Shell)协议是远程安全登录和命令执行的核心技术,它通过加密通道在客户端与服务器之间建立安全连接。其工作原理基于非对称加密和对称加密的结合,首先进行密钥交换和身份认证,然后建立加密隧道进行数据传输。这项技术的核心价值在于为系统管理、自动化运维和分布式应用提供了安全可靠的远程操作能力,广泛应用于服务器管理、批量部署、日志采集和CI/CD流水线等场景。在Java生态中,JSch作为纯Java实现的SSH2协议库,解决了跨平台兼容性和安全性问题,通过其API可以高效执行远程命令、进行SFT

CSDN头条 396

ssh 远程变更

使用SSH登录某台机器,有时因为server端的一些变动,会出现以下信息: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

VergiL Wang的专栏 748

SSH远程访问控制

一:SSH概述 1.1什么是SSH SSH (Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程、复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议。 SSH客户端<--------------网络--------------->SSH服务端 数据传输是加密的,可以防止信息泄漏 数据传输是压缩的,可以提高传输速度 1.2SSH的作用 SSH客户端:Putty、 xs

ver_mouth__的博客 1万+

linux ssh配置文件 StrictHostKeyChecking no

/etc/pam.d/login控制台(管理终端)对应配置文件 /etc/pam.d/sshd登录对应配置文件 /etc/pam.d/system-auth系统全局配置文件 /etc/pam.d/password-aurh密码检验配置文件

yuezhilangniao的博客 2358

ansible系列4-关闭ssh首次连接时提示

在ansible配置文件中找到 /etc/ansible/ansible.cfg 方法1 在配置文件中找到 了解到问题原因为,我们了解到进行ssh连接时,可以使用-o参数将StrictHostKeyChecking设置为no,使用ssh连接时避免首次连接时让输入yes/no部分的提示。通过查看ansible.cfg配置文件,发现如下行: [ssh_connection] #...

dlm520947的博客 596

ssh访问跳过RSA key"yes/no"验证

通常我们再批量配置多台机器的时候经常出现通过ssh批量登录机器提示 RSA key fingerprint is 92:03:a6:b1:c9:d7:b8:00:c1:42:83:8e:f5:42:2b:8b. Are you sure you want to continue connecting (yes/no)? 这样导致我们批量操作机器非常不方便,这样我们就需要取消这个提示...

weixin_30627341的博客 615

hadoop问题总结

1.The authenticity of host ‘localhost (::1)’ can’t be established. 方法1 ssh -o StrictHostKeyChecking=no 192.168.121.xxx 方法2 修改/etc/ssh/ssh_config文件(或$HOME/.ssh/config)中的配置,添加如下两行配置: StrictHostKeyChecking no UserKnownHostsFile /dev/null 修改好配置后,重新启动sshd服务即可

yandao的博客 2695

取消ssh第一次连接时的验证询问

有时候会影响脚本或剧本执行,如果不想再出现该询问消息,可以在配置文件。,保存退出后重启ssh服务。

w1042294904的博客 845

SSH配置config文件连接目标服务器

Windows上ssh客户端配置代理连接目标服务器 Host route_ip HostName route_ip_name User route_user StrictHostKeyChecking no ##取消首次连接的验证提示 IdentityFile E:\abc\abc***_rsa ProxyCommand "E:\secret\connec...

苍烟落照 655

Linux解决第一次ssh连接服务器需要输yes或者scp报host key verification failed

Linux第一次远程连接服务器需要建立共识,所以ssh会让输yes,scp会报错host key verification failed 尤其是需要批量操作多台服务器,仅用sshpass或者expect并不能完全解决,完全自动化,还是需要手动 但是只要连接过一次之后,后续便不会再有此问题 那么我们如何快乐度过这一关,开开心心的远程连接呢 这个时候一个参数便爆出了,他就是StrictHostKeyChecking 只需要我们 ssh -oStrictHostKeyChecking=no 设置好这..

神芷迦蓝寺 5074

Ubuntu ssh使用 ssh localhost命令 时出现: Host key verification failed.

Ubuntu使用 ssh localhost命令 时出现: Host key verification failed. 用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。 S

chaojiwanwan的博客 3997

SSH远程连接四阶段原理与安全配置实战指南

SSH远程连接并非简单的网络连通,而是一种基于密码学的可信会话建立机制。其核心原理涵盖TCP传输层连接、密钥交换(KEX)算法协商、服务端主机身份验证、客户端用户身份认证四大严格阶段。技术价值在于通过非对称加密、主机指纹校验和公钥认证构建防中间人攻击的安全隧道。典型应用场景包括Linux服务器运维、VS Code Remote-SSH远程开发、Git over SSH代码托管以及嵌入式设备调试。本文深入解析sshd_config关键参数配置、密钥交换失败排查、known_hosts冲突处理及ssh-agen

jardownload的博客 365

ssh 去掉第一次认证主机

新主机建立ssh连接总是出现Theauthenticityofhost'222.185.x.x(222.185.x.x)'can'tbeestablished. RSAkeyfingerprintis83:0c:88:96:a5:60:ba:6f:6b:6e:cb:16:16:c6:4c:23. Areyousureyouwanttoc...

weixin_34245749的博客 592

别再被SSH算法协商失败卡住了!手把手教你修改ssh_config搞定OpenSSH连接

本文详细解析了SSH算法协商失败的常见原因,并提供了四种客户端配置方案,包括临时会话级解决方案、主机级持久化配置、安全降级策略和多版本兼容方案。通过修改ssh_config文件或使用命令行参数,用户可以快速恢复OpenSSH连接,同时确保安全性与兼容性的平衡。

djfiew7234的博客 360

宇树Go2EDU SSH连接与ROS2开发全链路指南

移动机器人开发平台是融合嵌入式系统、ROS机器人操作系统和边缘计算能力的典型工程载体。其核心原理在于构建稳定可靠的设备通信链路,依赖专用硬件网关(如拓展坞)实现隔离局域网组网与USB-C高速数据透传。技术价值体现在低延迟控制、确定性网络时序和安全可控的固件级接口约束上。典型应用场景覆盖高校机器人教学、SLAM建图实验、四足运动控制算法验证及工业巡检原型开发。本文聚焦宇树Go2EDU平台,深入解析192.168.123.0/24私有网段配置逻辑、SSH密钥免密登录实践及ROS2 Humble环境下的首个Low

weixin_33795743的博客 462

禁用 SSH 远程主机的公钥检查

SSH 公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击。但是在特定情况下,严格的 SSH 公钥检查会破坏一些依赖 SSH 协议的自动化任务,就需要一种手段能够绕过 SSH 的公钥检查。 首先看看什么是 SSH 公钥检查 SSH 连接远程主机时,会检查主机的公钥。如果是第一次该主机,会显示该主机的公钥摘要,提示用户是否信任该主机: 当选择接受,就会将该主机的公钥追加到文件 ...

alex_liws的博客 315

多机免密互信

#设置一个空的私钥 ssh-keygen -f /root/.ssh/id_rsa -N "" #id_rsa.pub变成authorized_keys mv /root/.ssh/{id_rsa.pub,authorized_keys} #将.ssh目录整个拷贝到其他主机 scp -r /root/.ssh IP:/root 免除询问yes/no vim /et...

weixin_30469895的博客 186
上一篇: KafkaMirror Maker架设笔记
下一篇: DNS转发配置
bydc2009
博客等级 码龄12年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值