如何检查主机是不是在您的 known_host ssh 中

Posted

技术标签:

【中文标题】如何检查主机是不是在您的 known_host ssh 中【英文标题】:how to check if a host is in your known_host ssh如何检查主机是否在您的 known_host ssh 中 【发布时间】:2012-08-21 15:31:38 【问题描述】:

我的脚本中有以下命令可以将主机添加到 ssh 中的已知主机。

VAR2=$(expect -c '
 spawn ssh -o StrictHostKeyChecking=no '"$REMOTE_HOST_USER@$REMOTE_HOST_IP"'
 expect "*?assword:*"
 send "'"$REMOTE_HOST_PASSWD"'\r"
 expect  
 "Permission denied, please try again." 
 exit '"$WRONG_PASSWORD"' 
 
 
 ')

工作正常,但是如果主机已经在 known_hosts 中,我需要在命令之前进行控制,如果它已经在 known_hosts 中,则不执行命令。如何检查主机是否在 known_hosts 中?

【问题讨论】:

【参考方案1】:

试试:ssh-keygen -F <hostname>

如果找到主机名指纹并且命令返回0,将显示known_hosts 行,否则不显示任何内容并且命令返回1

【讨论】:

这似乎没有做任何事情,甚至没有打印任何东西到屏幕上。奇怪。 @VinceKronlein,当找不到您的主机名匹配时,应该会发生这种情况。只返回完整的匹配项。 是的,那是我的错。我不只是使用主机名,即:google.com,我试图使用 git 主机寻找 git 存储库的密钥,即:git@google.com ...一旦我只使用主机名,它就很好用. 如果您喜欢我尝试找出是否存在监听非标准端口(22 除外)的 SSH 服务器的密钥,请使用以下命令:ssh-keygen -F "[gerrit.example.com]:29418"【参考方案2】:

根据 ssh-keygen(1) 手册页

-F 主机名 在 known_hosts 文件中搜索指定的主机名,列出找到的所有匹配项。此选项对于查找散列很有用 主机名或地址,也可以与 -H 选项以散列格式打印找到的键。

【讨论】:

以上是关于如何检查主机是不是在您的 known_host ssh 中的主要内容,如果未能解决你的问题,请参考以下文章

何时在您的应用中检查 Google Play 服务

无法将 IP 地址“xxx”的 RSA 主机密钥添加到已知主机列表 (/home/webapp/.ssh/known_hosts)

本网站需要在您的浏览器中启用 Javascript

如何从 bitbucket 克隆 laravel 项目并使用 Sourcetree 在您的计算机上安装和运行?

python 直接在您的视图中检查变量(https://djangosnippets.org/snippets/743/)

如果在您的服务器上启用了 PATH_INFO,请检查 PHP?