0

所以,我正在尝试设置一个具有端口转发功能的坚如磐石的反向 SSH shell,因为我有一台机器在一个通过 4G 连接到网络的位置,这意味着不人道的 NAT 层,所以“拨入”一个动态 DNS 主机名是不行的(尝试过,dyndns 服务报告的 IP 地址与我的 4G 调制解调器的管理界面报告的完全不同,我只能在上游设置 DMZ)。

到目前为止,我主要使用 autossh 和远程端口转发来设置它,连接到桥头 EC2 实例,现在我已经让它在一段时间后不会断开连接。我 TCPKeepalive在两台机器上使用,ServerAlive在“埋地”机器和ClientAlive桥头堡上。

这是“隐藏”机器(.ssh/config)上的配置:

Host revssh-forward-ssh
    RemoteForward       8292 localhost:22

Host revssh*
    HostName            bridgehead-machine
    User                myuser
    Port                22
    ServerAliveInterval 20
    ServerAliveCountMax 3
    TCPKeepAlive        yes
    StrictHostKeyChecking       no

Host *
    UseRoaming          no

...这是 autossh 调用:@reboot sleep 30 && autossh -M 0 -f -T -N revssh-forward-ssh来自我可信赖的 crontab。

在桥头堡,我将这些添加到常规 SSHD 配置中:

GatewayPorts yes
TCPKeepAlive yes
ClientAliveInterval 20
ClientAliveCountMax 3

所以最后一切似乎都在运行。但是今天我注意到了一些奇怪的事情。我经常sudo sockstat -l在桥头堡上运行,看看我是否还打开了 8292 端口。我没看到。我想,该死的,autossh 一定已经退出了。因为我现在有另一种进入机器的方法,所以我加入了,令我惊讶的是,autossh 正在运行,并且它有一个子 ssh 进程。

我跳到桥头堡,ps afx表明 ssh 连接确实存在。但是端口转发死了。

所以我杀死了桥头上的 ssh 进程(不是 SSHD,我没有自杀的感觉),片刻之后,autossh 在隐藏的服务器上发挥了作用,sockstat 显示端口再次打开。

现在:AFAIK,这是不可能的。那么发生了什么,我该如何预防呢?

[编辑:当然,我检查了两台机器上的系统日志,但没有弹出任何内容。我看到 autossh 在掩埋服务器上建立了会话,并且看到会话在桥头上被接受并启动。没有其他的。]

4

0 回答 0