尝试在海外进行 SSH

尝试在海外进行 SSH

我如何ssh在 Mac OS X 上使用远程访问海外的计算机?我想帮助我兄弟处理他的计算机,但他现在住在英国(我很确定他使用 VPN 来维持与美国流媒体服务的连接)。我已经在我的局域网上完成了它,但从未在远程服务器上完成过......更不用说在海外的服务器了。

我尝试了基本的,但我确信有很多原因导致随机 IPv4 地址不起作用:Dssh [email protected]

我们需要配置他这边吗?

答案1

sshd如果您想以简单的方式执行此操作,则需要他从计算机转发端口 22 并让他运行。

另一方面,你可以做一些肮脏的工作,让他做一个端口转发ssh到你的计算机。这可以通过设置一个ssh守护进程来完成(OSX 的说明这里ssh),然后通过路由器从主计算机端口转发端口 22(端口)。每个路由器和固件之间都有很多很多的差异,所以我真的无法引导您完成这一步。然而,这个网站似乎有一个非常大的针对不同路由器定制的指南数据库,所以你可能会在那里运气好。另请确保为您的主计算机设置静态专用 IP 地址,以便DHCP不会给您新地址。如果发生这种情况,您的外部端口将被转发到不存在的内部主机,因此这是毫无意义的。

接下来,为你的兄弟创建一个用户。这里没什么特别的,只要确保它有密码并且他知道它是什么即可。还要确保他ssh的计算机上运行着一个守护进程。他也可能有兴趣在他的计算机上为您创建一个用户,这样他就不需要向您暴露他的密码并为您提供您自己的主目录。

一旦你ssh运行了一个守护进程,让你的兄弟使用命令连接到你的计算机,他应该能够连接并输入他的密码(出于安全原因,在基于 UNIX 的操作系统上不会显示密码)。一旦他连接上,来自您计算机端口 2222 的流量将转发到他计算机的端口 22(端口)。您现在应该能够使用 来连接到他的计算机。玩得开心!ssh -R 2222:localhost:22 [email protected]sshssh -p 2222 you@localhost

作为结束语,我建议您可能还想从 DDNS 站点获取主机名no-ip.com。这样,您就可以轻松连接到路由器,该路由器位于something.ddns.net或类似的位置。我喜欢 no-ip,因为它是免费的,并且如果您将路由器配置为正确使用它,它会自动更新主机名以指向您的公共 IP 地址。

答案2

SSH 不关心距离。要连接到名为 的计算机somewhere.example.com,只需运行ssh somewhere.example.com。要连接到 IP 地址为 192.0.2.4 的计算机,只需运行ssh 192.0.2.4.当然,目标计算机必须运行 SSH 服务器。

美中不足的是,您兄弟的计算机可能没有您可以访问的 IP 地址。大多数计算机无法直接从互联网访问:它们位于NAT设备。大多数 ISP 设备(称为“路由器”或“调制解调器”)也执行 NAT。在其基本形式中,NAT 为网络上的计算机提供私有 IP 地址(即仅在该本地网络上有效的地址),并允许通过单个公共 IP 地址进行传出连接,但不允许传入连接。

要访问您兄弟的计算机,您需要让他配置他的 NAT 设备,以使传入的 SSH 连接到达您想要访问的计算机。调制解调器/路由器的网络界面可能在某处有这样的设置。

另一个困难是大多数家庭 ISP 动态分配 IP 地址,因此您兄弟的 IP 地址会随着时间的推移而变化(通常每隔几天)。你应该让他来设置动态域名解析,让他的计算机在每次更改时向服务器注册 IP 地址。一些 ISP 设备支持动态 DNS,但这还远未普及;如果你的兄弟没有,他就必须通过他的计算机来完成此操作。

或者,您可以自己完成这些步骤,让您的兄弟通过 SSH 连接到您的计算机,然后设置一个反向 SSH 隧道

答案3

通过 SSH 登录 LAN 内的计算机与登录 Internet 上的计算机没有太大区别。但有一些事情必须考虑。

  1. LAN 上的计算机很可能位于“专用”网络中,该网络的地址空间未在公共 WAN 上路由(看这里)。我想当你这样做时,ifconfig你的接口将被配置某种192.168.0.x地址10.x.x.x IP。是对的吗?

  2. 位于此类网络中的计算机可以访问互联网。但反过来,互联网不一定可以通过 IP 访问您的计算机。原因是你的LAN的IP被映射到您甚至可能与整个社区的设备共享的公共可路由地址。这是由您的 ISP 完成的(所谓的网络地址转换)。

  3. 即使您的兄弟使用 VPN,他也不一定会为他的计算机分配一个公共 IP 地址,因为即使 VPN 提供商也可以使用 NAT 来保存 IP 地址并将整个社区隐藏在一个或多个公共 IP 后面。

在这种情况下,我要做的第一件也是最简单的事情就是查看您和您的兄弟是否有 ISP 为其客户端分配 IPv6 地址。看一看这里

这些地址有 8 个由冒号分隔的 4 位十六进制数块。看这里。而他们的优点是:有一个很多可用,以便地球上每台具有网络功能的设备都可以拥有至少一个唯一的地址。在你的电脑上做ifconfig,让你的兄弟ifconfig也做。

如果您的 ISP 提供 IPv6 并且您的 PC 配置为获取它们(我猜至少在 Linux 中是默认设置),那么您应该会找到如下所示的一行:

inet6-address: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope:global

(更新:而不是scope:global你也可以有scopeid: 0xe

请注意,IPv6 地址的表示法标准允许删除具有 0 位数的连续块: 1234:000:0000:0000:0000:0000:000:5678 -> 1234::5678 (即非常有用)。

然后 - 在最简单的情况下 - 你可以简单地执行以下操作:

ssh username@[ipv6-address of your brother]

相关内容