Ssh 主机密钥验证

Ssh 主机密钥验证

我有一个位于端口转发防火墙后面的服务器。

Server <---> Firewall <------> NAT Port 222
                 |
                  -----------> VPN

我可以通过 VPN 使用密钥 ssh 进入。在服务器上执行以下操作:

sever:~> ssh-keygen -lf /etc/ssh/ssh_rsa_host_key

显示 HOSTKEY

我尝试从外部通过 ssh 进入它:

ssh server.external 

结果为“远程主机标识已更改”

 The fingerprint for the RSA key sent by the remote host is
 HOSTKEY.EXTERN

指纹 HOSTKEY 和 HOSTKEY.EXTERN 不同。

如果我通过 VPN 和其内部 IP ssh 进入它,一切都正常。

2个问题:

  1. 为什么HOSTKEY.EXTERN和HOSTKEY指纹不同?
  2. 如何从外部检查报告的主机密钥?

编辑:第 2 部分的答案和更多奇怪的发现:

我现在在内部和外部执行了“ssh-keyscan server”,结果是两个不同的密钥。

ssh-keyscan server.external > server.external.keyscan
ssh-keyscan server.internal > server.internal.keyscan

然后我会对这些进行指纹识别:

ssh-keygen -lf server.external.keyscan
ssh-keygen -lf server.internal.keyscan

两个指纹不同。我不明白。

答案1

SSH 很挑剔,因为主机名必须匹配中的给定键known_hosts。由于您是从外部访问它,因此您的 SSH 客户端看到的服务器来自 external.ip 而不是其内部地址。

我能想到的最好的解决方法是使用两个密钥对 - 一个用于外部访问,一个用于内部访问。这样两个密钥对都会在 中known_hosts

相关内容