兄弟们,在使用 SSH 连接远程服务器时,你有没有遇到过这样的情况:明明输入的密码和用户名都对,却突然弹出一个警告,告诉你“远程主机密钥已更改”?又或者,在一些自动化脚本中,你希望每次连接都像初次见面一样,能手动确认一次?

今天,我们就来揭开一个 SSH 背后的小秘密——~/.ssh/known_hosts 文件,以及如何通过一个精妙的 sed 命令,来玩转这个“管家”!


🏡 known_hosts:你的 SSH 连接“小本本”

首先,我们来认识一下 ~/.ssh/known_hosts 这个文件(在 Linux 系统中,~ 代表你的用户主目录,root 用户就是 /root/.ssh/known_hosts)。

它就像你的 SSH 客户端的一本“通讯录”,里面记录了你曾经连接过的远程服务器的“数字指纹”(也就是它们的公钥)。

  • 第一次连接时:当你第一次 SSH 连接到一个新服务器时,系统会提示你是否接受这个服务器的公钥指纹。如果你选择接受,这个公钥就会被记录在 known_hosts 文件中。
  • 再次连接时:之后当你再次连接同一个服务器时,SSH 客户端会检查 known_hosts 文件。如果记录的指纹与服务器当前的指纹一致,它就会信任这个连接并直接进行认证;如果不一致,它就会发出警告,提醒你可能存在中间人攻击,或者服务器的密钥确实更新了。

🕵️‍♀️ sed -i /^192.168.88.102/d /root/.ssh/known_hosts:魔法分解!

现在,我们来看这条看起来有点“高深”的命令:

sed -i /^192.168.88.102/d /root/.ssh/known_hosts

别慌,我们把它拆解开来,一步步理解:

  • sed:它是 Linux 系统中一个非常强大的流编辑器,可以用来对文本进行各种操作,比如查找、替换、删除等。

  • -i:这是一个非常重要的参数!它告诉 sed,你不是要把修改结果打印到屏幕上,而是要直接修改原始文件(in-place editing)。所以,执行完这条命令,/root/.ssh/known_hosts 这个文件本身就会被修改。

  • ^192.168.88.102/d:这是 sed 的核心指令,它由两部分组成:

    • ^192.168.88.102:这是一个正则表达式
      • ^ 符号表示“行的开头”。
      • 192.168.88.102 是一个具体的 IP 地址。
      • 合起来的意思就是:查找所有以 192.168.88.102 开头的行。在 known_hosts 文件中,每条记录通常都是以主机名或 IP 地址开头的。
    • /d:这个字母 dsed删除命令(delete)。
      • 它的作用是:删除所有匹配到前面正则表达式的行。
  • /root/.ssh/known_hosts:这个就是我们要操作的目标文件路径啦!

所以,这条命令的完整含义就是:

“在 /root/.ssh/known_hosts 这个文件中,找到所有以 192.168.88.102 开头的行,然后把它们直接删除掉!”


💡 为什么需要这样做?

那么,为什么要特意删除 known_hosts 中的记录呢?主要有以下几个场景:

  1. 服务器密钥更新:如果你的远程服务器(比如 IP 为 192.168.88.102 的那台)重装了系统,或者 SSH 服务重新生成了密钥,那么它新的“指纹”就和 known_hosts 中记录的旧指纹不一致了。SSH 客户端为了安全,就会阻止你连接,并提示“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”。

    • 此时,删除旧记录,下次连接时 SSH 客户端就会再次提示你确认新密钥,更新 known_hosts 文件。
  2. 自动化测试或部署:在一些自动化脚本或测试环境中,你可能希望每次连接某个固定的 IP 地址时,都能模拟首次连接的体验,或者确保密钥是最新的,而无需手动干预。通过脚本自动删除旧记录,可以强制 SSH 客户端重新验证。


总结

~/.ssh/known_hosts 文件是 SSH 安全机制的重要一环。而 sed -i /^IP地址/d ~/.ssh/known_hosts 这样的命令,则是一个方便我们管理和更新这个“通讯录”的小技巧。了解它的工作原理,能帮助我们更好地排查 SSH 连接问题,也能在自动化脚本中更灵活地处理连接验证!

你学到了吗?快去检查一下你的 known_hosts 文件里,有没有什么需要清理的“旧朋友”吧!👇

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐