如何解决Bash:SSH:检查IP地址或具有非标准端口的主机是否在known_hosts中
我正在尝试在bash脚本中测试以前是否已连接SSH主机。它使用非标准端口。
我正在使用this问题/答案中所建议的测试,并且我肯定知道此测试中的SSH主机位于known_hosts中,但该测试似乎无法正常工作。
是否无法使用ssh-keygen -F
测试IP地址?还是使用非标准端口是一个问题(因为对some.host.com:4567
的检查在这里也不起作用)...
#!/bin/bash
# test for IP address
if ssh-keygen -F '192.168.1.10:1234'; then
echo "Yes,a known host."
fi
## Expected Output:
#
## Host 192.168.1.10 found: line 6
#|1|hashblahblahblah
#Yes,a known host.
#
## Actual Output:
#
有什么想法吗?
解决方法
ssh-keygen
期望主机/ IP周围有方括号。因此,替换为:
ssh-keygen -F '192.168.1.10:1234'
具有:
ssh-keygen -F '[192.168.1.10]:1234'
您可以通过查看~/.ssh/known_hosts
进行检查。第一行,如果有“标记”,则在每行之后是主机的逗号分隔列表(如果非标准,则带有端口)。 ssh-keygen -F
似乎期望命令行上使用与文件中使用的格式相同的格式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。