我经常通过具有临时 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 无关。诸如StrictHostKeyChecking
、UserKnownHostsFile
和 之类的参数CheckHostIP
仅与您要连接的目标主机有关。在您的例子中,它是。它们对作为参数一部分指定的主机ip
没有影响。jump
-J
我认为无法在命令行中为跳转主机指定这些设置。但您可以将这些参数添加到文件中~/.ssh/config
,如下所示:
Host jump
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
CheckHostIP no