SSH端口转发


0

我有一台安装了ssh的服务器机器(A)以及一个网络服务器。

如何将带有Web服务器的端口转发到本地计算机(B)。

我应该可以浏览到 http://localhost:forwardedport

这是LOCAL还是REMOTE端口?这是我尝试过的。

ssh -L 8888:name.dnydns-server.com:8888 localhost

ssh -L 8888:localhost:8888 name.dnydns-server.com

and both of those with username@name.dnydns-server.com

我究竟做错了什么?

编辑:给出的答案是事实上正确的,并解释了端口转发的用法。事实证明我使用的是正确的命令,而是有一个防火墙规则阻止我从服务器本身连接到端口8888。当我尝试连接到网站时,我想到了这一点,同时sshed到远程服务器。


你需要做一些故障排除。检查它在执行http:// localhost之前。是否创建了SSH隧道?命令netstat -aon应该显示给你。也许隧道没有被创建,因为Windows防火墙在运行sshd的机器上阻塞了端口22。粘贴在命令行中运行该ssh命令时获得的结果。显示当您执行http:// localhost
barlop 2013年

对我来说,portforwarding意味着将路由器设置为将某个端口上的传入流量(例如,http为80)指向网络中的特定计算机/服务器。你问一下ssh隧道。但也许我误解了?
2013年

Answers:


5

我想你首先需要明确一些我将使用的术语:

客户端是指启动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了吗?它必须始终保持连接,以便隧道工作。网络服务器上的默认端口?网络服务器没有运行?

编辑:我更改了“客户端”和“服务器”的定义以澄清事情,因此一些注释不再适用并引用已删除的内容。


你开始定义好了。如果情况不同并且您在您所坐的机器上运行ssh服务器,那么您将使用什么术语?(虽然我不确定这样的用户案例何时会发生)
barlop 2013年

另外,我很好奇,你能勾勒出一个不这样的例子 - “客户意味着你所坐的机器(通常 - 如果你连接起来可能会更复杂)”?
barlop 2013年

你可以坐在机器A,做“ssh B”,然后从那里“ssh C”。对于第二个ssh,“客户端”是B,而不是您坐的机器。
迈克尔苏尔曼2013年

好的,你如何连接AB隧道和BC隧道的两条隧道?
barlop 2013年

1
这样的事情应该有效:ssh -L 8888:localhost:9999 B“ssh -L 9999:localhost:7777 C” - 但这并不是我做出定义时的想法。还有其他情况,您不会坐在ssh-client上,例如远程桌面连接。
迈克尔苏尔曼2013年

3

我假设服务器安装了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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.