macOS ssh 忽略 UserKnownHostsFile 选项

macOS ssh 忽略 UserKnownHostsFile 选项

我经常通过具有临时 IP 地址且经常更改 ssh 密钥的跳转主机 ssh 到虚拟机。我不希望在 ssh 密钥更改时收到提示,也不想收到接受 ssh 密钥的提示。

我已经阅读了有关 StrictHostKeyChecking 和 UserKnownHostsFile 选项的信息,但它们似乎没有任何效果。在命令行上传递 UserKnownHostsFile=/dev/null 时,ssh 主机密钥总是会添加到 ~/.ssh/known_hosts(我现在有几十个条目)并且总是提示我接受 ssh 密钥。

出于安全原因,我不希望这种级别的不检查是全局的,只是为了我在 bash 文件中编写的这个连接。

这是我正在使用的 ssh 命令:

ssh  -o 'ConnectTimeout=10' \
     -o 'StrictHostKeyChecking=no' \
     -o 'UserKnownHostsFile=/dev/null' \
     -o 'CheckHostIP=no' \
     -i ~/.ssh/my_ident \
     "username@ip" \
     -J "username@jump"

另外,如果问题出在“=”部分,我已经尝试过这个,但仍然得到相同的结果:

ssh  -o 'ConnectTimeout 10' \
     -o 'StrictHostKeyChecking no' \
     -o 'UserKnownHostsFile /dev/null' \
     -o 'CheckHostIP no' \
     -i ~/.ssh/my_ident \
     "username@ip" \
     -J "username@jump"

我在 macOS 10.14.4 上使用 OpenSSH_7.9p1、LibreSSL 2.7.3

知道为什么 -o 参数被忽略或者没有按照我想要的方式执行吗?

答案1

这可能与 MacOS 无关。诸如StrictHostKeyCheckingUserKnownHostsFile和 之类的参数CheckHostIP仅与您要连接的目标主机有关。在您的例子中,它是。它们对作为参数一部分指定的主机ip没有影响。jump-J

我认为无法在命令行中为跳转主机指定这些设置。但您可以将这些参数添加到文件中~/.ssh/config,如下所示:

Host jump
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
    CheckHostIP no

相关内容