我有一台安装了 ssh 的服务器机器(A)以及一个 Web 服务器。
如何将 Web 服务器的端口转发到我的本地机器(B)。
我应该可以浏览http://localhost:forwardedport
这是本地还是远程端口转发?以下是我尝试过的。
ssh -L 8888:name.dnydns-server.com:8888 localhost
ssh -L 8888:localhost:8888 name.dnydns-server.com
and both of those with [email protected]
我究竟做错了什么?
编辑:给出的答案实际上是正确的,并解释了端口转发的用法。事实证明,我使用了正确的命令,而防火墙规则阻止我从服务器本身连接到端口 8888。当我尝试在 ssh 进入远程服务器时连接到网站时,我弄清楚了这一点。
答案1
我想你首先需要弄清楚我将使用的一些术语:
客户表示启动 ssh 的机器。该机器被称为“本地”。
服务器表示您要使用 ssh 连接的计算机。此计算机称为“远程”。
本地端口转发使用 ssh 意味着您从客户端连接到服务器,从而打开一个隧道,以便客户端上的另一个程序可以通过本地端口连接到服务器站点上的主机和端口。此选项为 -L local_port:remote_machine:remote_port。
远程端口转发使用 ssh 意味着您从客户端连接到服务器,从而打开隧道,以便服务器上的程序可以通过服务器上的端口连接到客户端站点上的主机和端口。此选项为 -R remote_port:local_machine:local_port。
如果我理解正确的话,您需要一个本地转发,例如创建到您的服务器 name.dnydns-server.com 的连接,然后使用您的本地浏览器连接到 name.dnydns-server.com 上的端口 8888。
列表中的以下命令实际上可以执行您想要的操作:
ssh -L 8888:localhost:8888 name.dnydns-server.com
第一个 8888 是您的附加程序(浏览器)可以连接到的客户端端口。
该行中的“localhost”是从隧道末端看到的,即在服务器(name.dnydns-server.com)上。localhost 是机器本身,所以它是您想要的。(您可以在服务器的网络上放置一个不同的名称来访问它)
第二个 8888 是您要连接到服务器站点的端口。如果您在标准端口 80 上运行 Web 服务器,则必须将其更改为 80。
name.dnydns-server.com 是您所连接的 ssh 服务器的名称,它是隧道的端点。
不过,我不知道为什么这条命令对你不起作用。你退出了 ssh 吗?它必须一直保持连接才能使隧道正常工作。Web 服务器上的默认端口?Web 服务器没有运行?
编辑:我改变了“客户端”和“服务器”的定义以澄清一些事情,因此某些评论不再适用并引用了已删除的内容。
答案2
我假设服务器已安装 sshd,并监听众所周知的默认端口 (22),而 Web 服务器正在监听众所周知的默认端口 (80)。假设服务器是服务器 (A),是您想要通过隧道到达 Web 服务器的“管道”。以下是您需要在这种情况下“告诉” ssh 的内容:
ssh -L <local port to point your browser toward>:<host name or IP of the web server>:<port that the web server is listening on> <valid user on server>@<server name or ip address>
因此,根据我认为您要做的事情,我认为它应该是这样的:
ssh -L 8888:web.server.dyndns-server.com:80 youruserid@yourserver
执行此操作,然后将浏览器指向 localhost:8888。