博客
关于我
ssh StrictHostKeyChecking
阅读量:630 次
发布时间:2019-03-14

本文共 1428 字,大约阅读时间需要 4 分钟。

SSH 公钥检查的工作原理与应对方法

SSH 连接远程主机时,会进行主机公钥检查,这是一个重要的安全机制,能够防止中间人劫持等黑客攻击。但在某些特定场景下,这一检查机制可能会干扰依赖 SSH 协议的自动化任务。因此,我们需要了解如何绕过 SSH 公钥检查,以应对实际应用中的常见问题。

SSH 公钥检查的基本概念

在 SSH 连接过程中,客户端会验证远程主机的公钥。如果是首次连接,系统会提示用户是否信任该主机,并将其公钥添加到 `~/.ssh/known_hosts` 文件中。随后,在后续连接时,将自动验证已知的公钥,避免重复提示。

然而,当服务器的公钥发生变化(例如服务器重装、IP 更换或网络劫持)时,会出现以下警告信息:

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!_IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!

此时需要手动删除 `~/.ssh/known_hosts` 文件中的对应记录,才能继续连接。

绕过 SSH 公钥检查的常见方法

在某些情况下,严格的 SSH 公钥检查会干扰自动化任务,无法正常运行。以下是一些有效的解决方案。

禁用 StrictHostKeyChecking

默认情况下,SSH 客户端会对远程主机的公钥进行严格检查。通过禁用这一检查,可以在首次连接时自动信任新主机的公钥。

示例配置方法:

  • 编辑全局配置文件 `/etc/ssh/ssh_config`,添加以下内容:
  • Host * StrictHostKeyChecking no
  • 或者,在 SSH 命令行中使用选项:
  • $ ssh -o StrictHostKeyChecking=no 192.168.0.110

这样配置后,首次连接时系统会提示是否信任远程主机的公钥,随后会自动追加到 `known_hosts` 文件中。

使用 UserKnownHostsFile 指向空文件

如果需要完全绕过公钥检查,可以将 SSH 客户端指定一个空的 known_hosts 文件。例如:

$ ssh -o UserKnownHostsFile=/dev/null 192.168.0.110

此时 SSH 会正常处理首次连接的公钥提示,而不会将任何主机信息存储到本地文件中。

结合两种方法实现无口令登录

如果使用密码或双因素认证,配合以上方法,可以实现完全的自动化任务支持。例如:

$ ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 192.168.0.110

这样配置后,不需要输入密码即可直接连接到远程主机(前提是已配置客户端公钥认证)。这对于依赖 SSH 协议的自动化任务来说,是一种非常实用的解决方案。

常见问题修复方法

当服务器公钥改变时,用户需要手动清空 `~/.ssh/known_hosts` 文件。例如,使用以下命令:

$ rm .ssh/known_hosts

或者使用 `vi` 或 `nano` 编辑器删除相关条目。

总结与注意事项

在使用以上方法时,需要根据具体场景选择最合适的方案。重点在于保持远程主机的安全性,同时优化自动化任务的稳定性。

此外,建议定期检查 `known_hosts` 文件,确保其内容准确无误,以避免因旧数据导致的连通问题。

转载地址:http://wuooz.baihongyu.com/

你可能感兴趣的文章
PHP -算法-二路归并
查看>>
php 2条不一样 的json数据 怎么放在一个json里面_如果你是PHP开发者,请务必了解一下Composer...
查看>>
php 360 不记住密码,JavaScript_多种方法实现360浏览器下禁止自动填写用户名密码,目前开发一个项目遇到一个很 - phpStudy...
查看>>
regExp的match、exec、test区别
查看>>
php 404 自定义,APACHE 自定义404错误页面设置方法
查看>>
PHP 5.3.0以上推荐使用mysqlnd驱动
查看>>
php 7.2 安装 mcrypt 扩展: mcrypt 扩展从 php 7.1.0 开始废弃;自 php 7.2.0 起,会移到 pecl...
查看>>
php aes sha1解密,PHP AES加密/解密
查看>>
php CI框架单个file表单多文件上传例子
查看>>
php composer
查看>>
reflow和repaint引发的性能问题
查看>>
php csv 导出
查看>>
php curl 实例+详解
查看>>
php curl_init函数用法(http://blog.sina.com.cn/s/blog_640738130100tsig.html)
查看>>
php curl_multi批量发送http请求
查看>>
php curl请求微信发红包接口出现错误:Peer's Certificate issuer is not recognized.
查看>>
PHP curl请求错误汇总和解决方案
查看>>
php declare(ticks=1)
查看>>
UVA 10474
查看>>
php echo 输出 锘?... 乱码问题
查看>>