我的办公室有一个默认网关,其后面是一个本地网络,为包括我在内的所有计算机分配本地 IP 地址。
我在安装了 Ubuntu 的办公室 PC 上拥有管理员权限,并且周末必须通过 SSH 访问计算机。
在办公室,我没有公共 IP,但我总是从 DHCP 获得相同的本地 IP。尽管我无法在主防火墙中设置端口转发,但我可以自由地在我的电脑中设置我喜欢的任何软件。
我的家用计算机也运行 Linux,获得了一个公共 IP。请注意,我无法安装类似 Team Viewer 的软件。
我该如何解决我的问题?
答案1
这很容易:
[从办公室机器执行] 设置连接 Office -> Home(因为 Home 有公共 IP)。这将设置从您的办公室机器到家的反向隧道。
ssh -CNR 19999:localhost:22 homeuser@home
[从家用计算机执行] 从家里连接到您的办公室。这将使用步骤 1 中的隧道。
ssh -p 19999 officeuser@home
请确保 ssh 隧道不违反您公司的政策,因为有时您可能会因为这种连接模式而被解雇(例如,我的雇主会因此解雇我)。
附注在第一步中,您可能想要使用autossh
类似的东西,这样在网络不稳定的情况下您的隧道连接将自动恢复。
答案2
假设您可以控制家庭网络,并且您设置了固定的内部IP地址(例如基于家庭PC的MAC地址),那么您可以在家庭路由器上打开一个端口(例如4321)来转发也可以通过 4321 连接到您的 PC。
在家里监听sshd
该端口。
在本地创建一个新用户,因为您(当然)不想在您不在办公室时使用普通的公钥/私钥对在办公室计算机上运行。在办公室计算机上创建公钥/私钥对,并将公钥复制给家庭计算机上的新用户。
假设您的家庭IP(由您的提供商提供给您的路由器)相对稳定,并且您可以在某个地方发布此家庭IP地址(例如通过将其上传到某个网站),您的办公室PC可以在其中检索这样,您的办公室 PC 就可以建立反向 ssh 隧道。
您的办公室 PC 应定期(例如每 5 分钟)检索家庭 IP,如果 IP 已更改,则设置反向 ssh 隧道:
ssh -p 4321 -N -R 12345:localhost:22 reverse@home-ip
您可以使用 ssh 连接到本地端口 12345 以连接到您的办公室 PC:
ssh -p 12345 officelogin@localhost