如何检查主机是不是在您的 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 中的主要内容,如果未能解决你的问题,请参考以下文章
无法将 IP 地址“xxx”的 RSA 主机密钥添加到已知主机列表 (/home/webapp/.ssh/known_hosts)
如何从 bitbucket 克隆 laravel 项目并使用 Sourcetree 在您的计算机上安装和运行?
python 直接在您的视图中检查变量(https://djangosnippets.org/snippets/743/)