Bash: SSH: 检查是否有非标准端口的 IP 或主机在 known_hosts
Bash: SSH: Checking if an IP or host with non standard port is in known_hosts
我正在尝试测试之前是否已在 bash 脚本中连接到 SSH 主机。它使用非标准端口。
我正在使用 this question/answer 中建议的测试,并且我确定此测试中的 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
预计 square-brackets 在 host/IP 附近。因此,替换:
ssh-keygen -F '192.168.1.10:1234'
与:
ssh-keygen -F '[192.168.1.10]:1234'
您可以通过查看 ~/.ssh/known_hosts
来检查这一点。第一项,如果有的话,在“标记”之后,每行是一个 comma-separated 主机列表(如果非标准则带有端口)。 ssh-keygen -F
似乎期望 command-line 上的格式与文件中使用的格式相同。
我正在尝试测试之前是否已在 bash 脚本中连接到 SSH 主机。它使用非标准端口。
我正在使用 this question/answer 中建议的测试,并且我确定此测试中的 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
预计 square-brackets 在 host/IP 附近。因此,替换:
ssh-keygen -F '192.168.1.10:1234'
与:
ssh-keygen -F '[192.168.1.10]:1234'
您可以通过查看 ~/.ssh/known_hosts
来检查这一点。第一项,如果有的话,在“标记”之后,每行是一个 comma-separated 主机列表(如果非标准则带有端口)。 ssh-keygen -F
似乎期望 command-line 上的格式与文件中使用的格式相同。