通过 SSH 隧道连接本地 Web 服务器

通过 SSH 隧道连接本地 Web 服务器

当我不在家时,我想访问我的本地网络服务器http://192.168.0.186:3000。我不想将其发布到互联网上,因为我认为如果你不是维护和安全方面的专家,这样做并不安全。我曾经使用 dyndns 对 Apache 服务器进行过这样的操作,当天日志中就充满了黑客攻击。当我从操作系统收到 C:/ 已满的消息时,我意识到出了问题。

我想到的是使用 SSH 隧道。因此,我假设我需要在本地机器上运行 SSH 服务器。我已经有一个了:192.168.0.186:22。我用它来从 git bash 连接。我想我还必须在路由器防火墙上打开端口 22,这样我就可以通过互联网访问 SSH 服务器。ssh [email protected]

在客户端机器上,我目前有 Windows 7、Windows 8.1 和 Fedora 23。如果可能的话,在 Windows 上,我想使用 git bash 或类似的东西代替 putty。我想自动在后台运行与此相关的所有程序,因此每次我想连接到家庭服务器时启动 putty 不是一个选择。如果需要,我可以为客户端编写一个简单的后台服务。

我的问题:

  1. 如何设置 SSH 服务器以将 HTTP 请求转发到本地 Web 服务器?
  2. 如何设置浏览器以使用 SSH 服务器连接到本地网络服务器?
  3. 为了使其更加安全,我是否应该创建一个192.168.0.186具有有限权限的新 Linux 用户来专门负责此责任?

答案1

查看 SSH 转发 查看本地端口转发在 ssh 上。

ssh -L 3000:internalip:3000 ext.home.ip.addr

这将打开一个本地端口 3000,该端口映射到 3000 上的服务器。您可以通过以下方式访问它:http://本地主机:3000在启动 ssh 连接的机器上

您还需要在路由器上进行端口转发,将外部 IP 地址映射到端口 22 的内部 IP 地址,并且可能使用动态 DNS 发布此地址。不幸的是,这会导致 SSH 向全世界开放,这是不可取的。它也不会帮助您在 putty 框上(但是你可以用腻子做类似的事情

但是,如果我这样做,我会在家用路由器上设置 OpenVPN 系统,然后使用 OpenVPN 将外部系统连接到 LAN - 这可以保护端口 22 流量,并且不需要使用 SSH。它也更容易实现自动化,并且大多数操作系统都有 OpenVPN 客户端。

相关内容