kex_exchange_identification 问题仍然存在:远程主机关闭连接

kex_exchange_identification 问题仍然存在:远程主机关闭连接

我最近在一台旧的 Dell Optiplex 上设置了一个 ubuntu 服务器。在同一网络上时,我可以通过 ssh 远程登录。但是,当我尝试使用公共 IP 从其他网络 ssh 登录时,出现以下错误:

kex_exchange_identification: Connection closed by remote host

我在这个论坛以及许多其他论坛上搜索过这个错误,并尝试了许多不同的方法来修复这个错误,但到目前为止都没有奏效。我已将端口转发到服务器的静态 IP,我已允许 OpenSSH 并通过 UFW 在我的服务器上打开端口 22,并且我已设置将我的计算机连接到我的网络的 VPN。到目前为止,这些都没有奏效。

我做错了什么?如果有人有其他我可以尝试的想法,或者任何我应该再三检查的东西,那就太好了。非常感谢。

答案1

我办公桌上的一台小型计算机也遇到过类似的情况。我调试该问题的方法就是运行 sshd -t,它会在调试模式下运行 sshd 守护进程。此命令报告我的密钥的权限无效。我所要做的就是进入存储密钥的文件夹并发出 chmod 0600 <your_ssh_keys>。也许你运行的操作也生成了具有错误权限的内容

答案2

抱歉,我必须提交答案,因为我的声誉还不够,所以我还无法发表评论。

似乎我们需要做更多的调试才能正确回答这个问题,但是您提到了 UFW,所以我想知道这是否真的配置错误。

/etc/hosts.allow您的和配置也有可能/etc/hosts.deny配置错误。

此外,您使用的是密码身份验证还是公钥身份验证?我问这个问题的原因是,即使您使用密码身份验证,ssh 客户端仍会在连接阶段发送您的主机 ID 密钥,ssh 服务器可能会将其视为身份验证失败(在某些配置中),这意味着您将无法输入密码。可以使用以下命令修复此问题:

ssh -o PubkeyAuthentication=No -o PreferredAuthentications=Password <username>@<your server IP>

如果您可以提交以下输出:

UFW 具有:

sudo ufw status

仔细检查文件中的条目/etc/hosts.*

尝试进行身份验证时,还可以通过添加标志来提交输出调试输出-v,例如:

ssh -v -i <ssh_privkey> <username>@<your server IP>

希望我们能够彻底查明此事。

相关内容