可能的重复:
如何使用 ssh 通过互联网连接两台计算机?
我在 LAN 中的一台 Linux 机器上运行 SSH 守护进程。我用它来连接我的电脑。现在的问题是我可以使用内部 IP 地址连接到 LAN 中的 SSH。如何从外部 LAN 连接到 LAN 中的 SSH?
答案1
如果您的路由器有外部 IP 地址,并且 LAN 上的计算机有本地地址(例如 192.168.xx),您需要设置从 WAN 到 LAN 的端口转发(端口 22 用于 SSH)。或者,您可以将您的计算机设置为 DMZ(非军事区),但不建议这样做,因为它会完全暴露您的计算机。
答案2
这取决于谁拥有系统的控制权以及是否允许您在系统上安装软件。如果是这样,一种选择是使用登录Hamachi。
LogMeIn Hamachi 是一种虚拟网络服务,可在几分钟内完成设置,并可在任何有 Internet 连接的地方安全地远程访问您的业务网络。
基本上,您在要连接的每个系统上安装 hamachi 客户端。该客户端将允许您创建自己的私有 VPN,该 VPN 将存在于您的 LAN 之外。然后,您将每个系统连接到刚刚创建的 VPN。每个系统都会获得自己的 hamachi IP 地址,然后您可以使用该地址连接到它,如下所示:
$ ssh <hamachi_ip>
LogMeIn Hamachi 是一项付费服务,但最多 5 个客户免费。底部有一个 PDF“入门指南”的链接这一页。我已经使用 Hamachi 多年了,它非常适合我的基本需求。
答案3
如果您可以控制网络中的路由器(我假设您可以),那么您可以设置简单的端口转发+转换。在外部选择一个端口号,并将其映射到带有 port 的内网 IP 22
。然后,您应该通过从外部访问外部 IP+端口来到达该内部端口。请参阅路由器的文档了解如何执行此操作。
或者,如果您无权访问路由器,但可以访问其他远程计算机,则可以设置 SSH 反向隧道以通过该“其他远程计算机”进行连接。这里的先决条件是您可以从两个内部网络访问该计算机。如果可以的话,请参阅这篇关于如何设置反向隧道的文章(只是众多示例中的一个):“Howtoforge:反向 SSH 隧道”。
答案4
如果你必须 必须 必须通过 DMZ 或端口转发暴露您的主机,然后确保您收紧了 sshd 配置:
- 不要允许 root 通过 ssh 登录(登录后可以使用 sudo / su )
- 不要允许基于密码的登录 - 使用证书(以防止暴力攻击)
- 只允许绝对需要通过 ssh 登录的用户...请参阅
sshd_config
联机帮助页(相关部分AllowGroups
和AllowUsers
) - 虽然我的最后一个建议有点属于安全领域,但无论如何我都会建议它,因为它可以防止端口扫描和随意的脚本 Kiddiez:使用端口敲门...您可以阅读客户端和服务器的安装这里。