如何创建 SSH 隧道

如何创建 SSH 隧道

好的,这是设置。我在本地网络之外,使用 iSSH(在 iPad 上)连接到我的家庭网络,到目前为止一切顺利,我曾经localhost通过创建隧道将我的家庭媒体中心重定向到。所以我可以localhost:8080在地址栏中输入并浏览我家里的媒体中心,它是:

local port : 8080
destination host : localhost
destination port 8080

效果很好。

现在我想更进一步,告诉我要连接的媒体中心,重定向192.168.1.112:8800,这是我想要从媒体中心访问的机器,基本上将媒体中心用作网关。我想我必须使用,ssh -L但我不太确定这是否是正确的方法。

我该如何创建这个隧道?

答案1

我使用粗体来区分您在 iPad 上连接的本地端口(粗体)和您在媒体中心上访问的远程端口(非粗体)。

看起来这就是你一直在做的事情:

ssh-L 密码8080:本地主机:8080[电子邮件保护]

“-L 8080:" 表示你将获取远程资源并将其绑定到本地端口(在本例中8080)这意味着您可以通过输入 localhost 来连接到此远程资源:8080在您的 iPad 上。下一部分“localhost:8080”(从媒体中心的角度来看)是您要绑定到其资源的主机名和端口8080在您的 iPad 上。您可以将其更改为媒体中心在其网络上可以看到的任何主机名或 IP 地址和端口。

现在您要连接到 192.168.1.112:8800,它将看起来像这样:

ssh -L [本地端口]:192.168.1.112:8800 [电子邮件保护]

然后你就可以连接到192.168.1.112:8800在 iPad 上想要使用的任何程序中输入 localhost:[aLocalPort] 即可。(其中 [aLocalPort] 是一些未使用的本地端口,如 9000。您可以使用与目标上相同的端口(8800) 方便的话

答案2

是的,您可以添加-L 192.168.1.112:8800,它会将您本地机器(我指的是客户端)上的端口绑定到隧道,并由远程服务器转发到指定的地址和端口。

答案3

我画了一些草图

输入 ssh 隧道命令的机器称为»您的主人«

从本地启动 ssh 隧道


从远程启动 ssh 隧道

介绍

  1. 当地的:-L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHost意思是:使用 ssh 连接到connectToHost,并将所有连接尝试转发到当地的 sourcePortonPort到名为 的机器上的端口forwardToHost,可以从该connectToHost机器访问。

  2. 偏僻的:-R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHost意思是:使用 ssh 连接到connectToHost,并将所有连接尝试转发到偏僻的 sourcePortonPort名为 的机器上的端口forwardToHost,可以从您的本地机器访问该端口。

你的例子

第二幅图代表此隧道。 是remotehost您的媒体中心。farawayhost是您的 192.168.1.112 机器及其感兴趣的粉红色端口(图中为端口456,但在您的例子中为端口8800)。因此命令必须如下所示:

ssh -L 123:192.168.1.112:8800 mediacenter

当然,你可以将绿色端口的号码更改123为你想要的任何号码,然后通过

localhost:123

其中 again123是绿色端口的任意端口号(由您的隧道命令选择)。

答案4

这不是一个真正的答案,但对于隧道来说,使用 autossh 而不是普通的 ssh 是一个好主意,如果出现超时等情况,它会自动重新建立隧道(前提是你已经设置了 ssh 密钥)

相关内容