我在 A 市有一台 ARMv7 迷你电脑,在 B 市有一台笔记本电脑。两台电脑都位于路由器和防火墙后面,ARMv7 运行的是 Ubuntu 14.04,唯一的用户是 root,笔记本电脑运行的是 ARch。我想从笔记本电脑访问 ARM。
我首先在 ARMv7 设备中使用了这个:
- 安装 OpenSSH
/etc/init.d/ssh start
ufw allow ssh
ssh -R 5999:localhost:22 laptopUser@laptop_publicIP
然后我尝试使用 从笔记本电脑访问 ArmV7 设备ssh localhost -p 5999
。
但是它不起作用。笔记本电脑的 SSH 总是超时。
笔记本电脑本身有一个动态 IP。
请帮助。
答案1
NAT 设备和类似的状态防火墙会在一段时间后丢弃空闲的 TCP 连接。连接一端或另一端的“路由器和防火墙”可能会在一段时间后阻止 ARM 设备和笔记本电脑之间的 TCP 流,因为连接处于空闲状态并且没有实际的数据包交换。
在 ARM 端(ssh 客户端),您可以尝试设置ServerAliveInterval
和/或TCPKeepAlive
设置。这将导致客户端和服务器偶尔互相发送数据包。请参阅ssh_config 文档。
您可以尝试的另一件事是在从 ARM 到笔记本电脑的 ssh 会话中运行一个命令,该命令会不时输出一些文本:
ssh -R 5999:localhost:22 user@laptop 'while true; do sleep 10; date; done'
答案2
首先 - localhost 始终指向您当前所在的计算机。因此,如果您想连接到远程计算机,则不能使用 localhost 或任何其他本地地址 :) 您需要使用远程计算机 IP 地址。
您必须让该 Arm 电脑在互联网上可见 - 但这需要访问城市 A 的路由器和防火墙。
或者,您可以使用 VPN 连接两台机器。