我正在尝试 ssh 到远程主机:
ssh host.example.com
我得到以下信息:
The authenticity of host 'host.example.com (<no hostip for proxy command>)' can't be established.
RSA key fingerprint is 62:db:31:0b:ce:e3:7b:a1:c7:0f:46:d1:7d:e5:48:10.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
我正在使用 ssh 配置~/.ssh/config
:
Host host.example.com
User deployuser
HostName host.example.com
IdentityFile ~/.ssh/deployuser_key
主机已在 中列出/etc/ssh/ssh_known_hosts
,且指纹匹配。 中没有条目~/.ssh/known_hosts
。
如果我接受密钥,它将被添加到~/.ssh/known_hosts
。我不确定no hostip for proxy command
表示什么,我想了解是什么导致了问题。
当我运行 ssh 命令时,-vvv
我可以看到 ssh 正在检查/var/lib/sss/pubconf/known_hosts
而不是/etc/ssh/ssh_known_hosts
- 我相信这解释了意外行为(如果不是警告消息)。一旦我添加了主机密钥/var/lib/sss/pubconf/known_hosts
(通过 FreeIPA),连接就会继续进行,没有任何警告或提示。
答案1
我不确定该
no hostip for proxy
命令表示什么并且我想了解问题的原因。
当您不使用代理连接到 SSH 服务器时,服务器的 IP 地址将被保存并存储在已知主机文件中。当您使用代理时,客户端永远不会获取远程 IP。对于不使用代理的客户端,未散列版本的 known_hosts 条目可能看起来像这样。
srv-01,10.99.4.29 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMOZnp2wcVBSp8ddLuXFrpD8YJGOQ8MzPihHr09qkGS
这不是一个“错误”,甚至不是一个有用的警告。您可以放心地忽略它。
CheckHostIP no
我相信您可以通过设置除 之外的选项来抑制“警告” ProxyCommand
。此选项基本上告诉 ssh 跳过存储/检查远程 IP。
从何而来有人告诉我设置此选项实际上不会产生任何安全影响。
答案2
将这些选项添加到 ProxyCommand 对我有帮助:-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null