我有一个反向 SSH 设置来穿越难以穿透的 CGN NAT。它运行良好,但 NAT 后面的客户端上的 SSHD 守护进程不断因未知原因而死亡(无法启动)。客户端成功与我的服务器建立反向 SSH 连接(使用公私密钥对),但是一旦我尝试反向 SSH 连接到 NAT 客户端,我得到:
在职的:
user@server:~$ ssh [email protected] -p 22424
[email protected]'s password:
Linux NATed-client 3.12.22+ #691 PREEMPT Wed Jun 18 18:29:58 BST 2014 armv6l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Dec 13 16:41:16 2014 from localhost
user@NATed-client ~ $
有缺陷的:
user@server:~$ ssh [email protected] -p 22424
ssh_exchange_identification: Connection closed by remote host
我将此反向 SSH 脚本设置为以标准用户身份每 15 分钟在 NAT 客户端的 crontab 中运行一次:
#!/bin/bash
createTunnel() {
/usr/bin/ssh -i /home/ssh_user_NATed_client/.ssh/NATed_Client_key \
-N -R 22424:localhost:22 [email protected] \
-o ExitOnForwardFailure=yes
if [[ $? -eq 0 ]]; then
echo Tunnel created
else
echo An error occurred creating a tunnel. RC was $?
fi
}
/bin/pidof ssh
if [[ $? -ne 0 ]]; then
echo Creating new tunnel connection
createTunnel
fi
发生这种情况后,我在 NAT 客户端上打开了该sshd_config
文件,但它是难以理解的乱码。当我用备份替换它时sshd_config
,一切都会恢复正常。就好像sshd
NAT 客户端上的 NAT 客户端随机修改了配置文件,然后无法sshd
启动(导致反向 SSH 连接上请求的 SSH 会话像这样关闭)。过去 6 个月内,这种情况已发生 3 次。文件权限为:
$ ls -l ssh_config
-rw-r--r-- 1 root root 1669 Feb 8 2013 ssh_config
NAT 客户端计算机仍在运行。它通过 crontab 每 15 分钟建立一次反向 SSH 连接,我编写的其他自动功能仍然有效。我只是无法控制它或通过反向连接通过 SSH 回到它。我非常确定 NAT 客户端上的 SSH 主机/服务器已死亡/拒绝在启动时启动。
我要指出的是,它是一个在 32GB SD 卡上运行的树莓派。它已经运行了大约6个月。可能是闪存磨损,但没有内核恐慌(无论如何很少写入闪存)。
有什么建议的解决方法或可以在这个系统上安装辅助 SSH 后门吗?这些随机的sshd
死亡快要了我的命。
感谢您的见解。