我安装了一个远程 Raspberry Pi(Debian 最新版)相机,并连接了移动调制解调器路由器,以便将照片上传到云端。
过去和现在,这种方法都运行良好。
为了管理照片序列的频率和其他内容,我在家里建立了一个通往 Ubuntu(20-04 最新版)台式电脑的隧道。
这是因为移动调制解调器路由器关闭了所有传入端口,所以我无法直接访问它。
这是执行的建立隧道的命令。(每分钟都会检查它是否处于活动状态)
/usr/bin/screen -dmS ssh-Ubuntu /usr/bin/ssh -o ExitOnForwardFailure=yes -R 2222:localhost:22 me@no-ip-domain -g
因此,我的桌面ssh -p 2222 pi@localhost
应该会提示我输入密码以登录 RPi。
去年它运行正常,没有问题,但现在我遇到了问题,它有时可以工作。
当它不工作时,不会出现输入密码的提示。
使用一个非常有用的工具 pitunnel,我获得了 ssh 访问权限。无论如何,我更喜欢我的隧道,因为它在每次输入字母之间没有延迟。
这样我就可以看到
ps aux | grep SCREEN
转储
pi 2759 0.0 0.2 5788 2084 ? Ss 15:04 0:00 /usr/bin/SCREEN -dmS ssh-Ubuntu /usr/bin/ssh -o ExitOnForwardFailure=yes -R 2222:localhost:22 me@no-ip-domain -g
因此隧道似乎已建立。如果我kill 2759
等待时间发生变化,则 cron 检查将再次建立隧道。然后再次
ps aux | grep SCREEN
转储
pi 11772 0.0 0.2 5788 2164 ? Ss 16:10 0:00 /usr/bin/SCREEN -dmS ssh-Ubuntu /usr/bin/ssh -o ExitOnForwardFailure=yes -R 2222:localhost:22 me@no-ip-domain -g
之后,会显示密码提示,我可以成功登录。
注销后,几个小时后,我进入了一个循环:没有提示输入密码等等。
如果命令和检查脚本在过去有效并且隧道似乎已建立,我不明白为什么有时不会显示密码提示。
除了软件更新之外,唯一的变化是我的桌面路由器。
我使用了与旧路由器相同的配置。在这种情况下:
NAT 转发 -> 服务类型=SSH;外部和内部端口=22;内部 IP=192.168.1.33;协议=全部;
更新 1:
netstat / ss -nltp
从桌面,但此时试图进入隧道,我得到
ssh:连接到主机 localhost 端口 2257:连接被拒绝
tcp 0 0 0.0.0.0:22 0.0.0.0:* 侦听 - tcp6 0 0 ::1:2222 :::* 侦听 - tcp6 0 0 :::22 :::* 侦听 -
更新 2:
昨天我在 /etc/ssh/ssh_config 桌面添加了两行
服务器存活间隔 15 服务器存活计数最大值 4
今天我可以使用隧道,但过了一段时间后再次尝试,
ssh -p 2222 pi@localhost
却被耽搁了几分钟,然后输出
kex_exchange_identification:读取:对等方重置连接
几分钟后
ssh -p 2222 pi@localhost
ssh:连接到主机 localhost 端口 2222:连接被拒绝
netstat / ss -nltp
不显示
tcp6 0 0 ::1:2222 :::* 侦听
尽管 Pips aux | grep Ubuntu
显示任务处于活动状态
pi 7232 0.0 0.2 5788 2036 ? Ss 09:17 0:00 /usr/bin/SCREEN -dmS ssh-Ubuntu /usr/bin/ssh -o ExitOnForwardFailure=yes -R 2222:localhost:22 me@no-ip -