SSH "kex_exchange_identification: read: Connection reset by peer"

SSH "kex_exchange_identification: read: Connection reset by peer"

设置:

问题:

当通过 SSH 从远程位置(通过 Internet)访问 raspberry 时,它一直有效,直到连接挂起。这是随机发生的。 有时我可以在几分钟后再次 SSH,有时直到我重新启动 Raspi 才可以。

我试过的:

debug1: Local version string SSH-2.0-OpenSSH_8.1
kex_exchange_identification: read: Connection reset by peer

我 运行 没头绪,对正在发生的事情一无所知。 之前有人遇到过与 SSH 连接相同的问题吗? 会不会是树莓派的负载问题?

长话短说,我的问题与网络问题无关,已通过检查 syslog.[=12 得到解决=]

详情:

我注意到 none 的网络应用程序(通过 LAMP 或 MERN 堆栈)在问题开始之前和 运行 时无法再访问。

所以我用 tail -f -n X /var/log/syslog 命令挖掘了系统日志(用你想显示的行数替换 X)。 然后我注意到有几行提到了 电压问题(抱歉我确实保留了确切的条款)。但基本上这意味着我的 Raspi 插入了外部硬盘驱动器没有足够强大的电源。

然后看起来硬盘被卸载,系统崩溃,这就解释了上面提到的所有问题。

所以我移除了 HDD,将 SD 卡放回原位,然后再次 运行 Raspi,同时再次检查 syslog并使用 htop 监控内存。事实证明,当我同时启动 apache 和节点服务器时,RAM 和 SWAP 内存已满,重复上述相同的结果。

所以最后我使用ZRAM增加了SWAP内存。 Link here.

现在一切正常,但仍在监控中。

我发现了另一种情况导致了这个精确的错误。请务必检查您尝试使用 SSH 连接的主机系统上 /etc/ssh 中 OpenSSH 生成的 public / 私钥文件的权限。这些密钥由 SSH 守护程序使用。

由于 OpenSSH 是跨平台的,因此同样适用于任何操作系统 运行 SSHd。这些文件必须具有适当的权限。

/etc/ssh 是默认路径,但如果您在 Windows 或其他 OS 上,它可能会有所不同。但对于大多数 Unix/Linux/macOS 系统,它应该是 /etc/ssh。

sudo chmod 600 *_key
sudo chmod 644 *.pub

您还应该验证 SSH 客户端对 ~/.ssh 和 public / 私钥、配置、authorized_keys 等具有正确的权限。尽管如果这些是错误的,您马上就会被告知。但是当 SSH 守护程序的密钥权限错误时,您会在日志中收到错误。

如果不是 DNS 或证书,则始终是权限。

我没有看到安装了 ufw(防火墙)。

ufw disable

(Or configure ufw.)

现在可以按预期访问端口。