设置:
- Raspberry 3B在外部硬盘上运行Raspbian Stretch 9并使用ZRAM
- Raspi用作运行LAMP和MERN堆栈的Web服务器,并通过SSH和1个IDE远程访问(适用于Mac OS的Coda(
- 静态IP路由器转发的SSH端口
- 故障2板运行
问题:
当通过SSH从远程位置(通过互联网(访问树莓时,它会一直工作到连接挂起。这种情况是随机发生的。我有时可以在几分钟后再次SSH,有时直到我重新启动Raspi。
我尝试过的:
- SSH在详细模式下从远程位置:
debug1: Local version string SSH-2.0-OpenSSH_8.1
kex_exchange_identification: read: Connection reset by peer
- 从本地网络以详细模式进行SSH(我实际上远程SSH本地网络上的另一台机器,然后从该机器SSH Raspi(相同结果:
Connection reset by peer
- 选中
/etc/hosts.allow
和/etc/hosts.deny
- 通过
iptables -L --line-number
检查iptables - 检查日志:
/var/log/fail2ban.log
和sudo journalctl -t sshd
- 用
no DNS
更新sshd_config
- 通过
apt-get --reinstall install openssh-server openssh-client
重新安装SSH
我这里没有什么想法了,也不知道发生了什么。就像有人以前遇到过同样的SSH连接问题一样?这可能是树莓的负载问题吗?
长话短说,我的问题与网络问题无关,通过检查syslog解决了这个问题。
详细信息:
我注意到,在问题开始之前,没有一个网络应用程序(通过LAMP或MERN堆栈(在启动和运行时无法访问。
因此,我使用tail -f -n X /var/log/syslog
命令挖掘了syslog(用要显示的行数替换X(。然后,我注意到有几行提到了电压问题(很抱歉,我保留了确切的术语(。但基本上,这意味着我的Raspi没有足够强大的电源。
然后,硬盘驱动器被卸载,系统崩溃,这就解释了上面提到的所有问题。
因此,我卸下硬盘,放回SD卡,再次运行Raspi,同时再次查看syslog并使用htop监控内存。事实证明,当我启动apache和node服务器时,RAM和SWAP内存已经满了,重复着上面提到的相同结果。
所以最后我使用ZRAM增加了SWAP内存。此处链接。
现在一切运行良好,但仍在监控中。
我没有看到安装了ufw(防火墙(。
ufw disable
(Or configure ufw.)
现在,端口可以按预期访问了。
我发现了另一个导致这种精确错误的场景。请确保在尝试使用ssh连接的主机系统上的/etc/ssh中检查OpenSSH生成的公钥/私钥文件的权限。这些密钥由SSH守护进程使用。
由于OpenSSH是跨平台的,这同样适用于任何运行SSHd的操作系统。这些文件必须具有适当的权限。
/etc/ssh是默认路径,但如果您使用的是Windows或其他操作系统,则可能会有所不同。但对于大多数Unix/Linux/macOS系统,它应该是/etc/ssh。
sudo chmod 600 *_key
sudo chmod 644 *.pub
您还应该验证SSH客户端是否对~/.SSH和公钥/私钥、config、authorized_keys等具有正确的权限。尽管如果这些都是错误的,您会立即被告知。但是,当SSH守护程序的密钥权限错误时,您会在日志中收到错误。
如果不是DNS也不是证书,那么它总是权限。
另一个出现错误的场景:kex_exchange_identification:read:对等方重置连接出现的是一个限制通过hosts.allow中ssh访问的配置,行如下:sshd: 192.168.178.12
然后尝试从不同于上述IP的IP进行ssh。
我的脚现在需要医疗护理。。。。