我可以创建SSH像代理服务器一样通过HTTP隧道传输服务器吗?


Answers:


43

您可以使用ssh执行此操作

ssh -L 80:remotehost:80 user@myserver

然后,您将拥有从本地端口80到远程主机端口80的隧道。这不必与myserver相同。为了使它透明,您应该在hosts文件中添加一个条目。如果您不这样做,则虚拟主机将无法工作。如果您想要SOCKS代理连接,也可以使用

ssh -D 5000 user@myserver

这将在本地主机端口5000上创建一个SOCKS代理,该代理通过myserver路由所有请求。


2
如果您需要框外的客户端可以使用该隧道,请添加-g选项。
—欧元先生

1
所写的命令对我不起作用。我必须用这样的环回替换远程主机:ssh -L 80:127.0.0.1:80 user @ myserver
eficker

如果远程端口与本地端口不同,则ssh -L 81:remotehost:80 user@myserver本地端口81 好像在远程端口上80一样会更有用。
拉法雷诺

1
如果要通过〜/ .ssh / config添加SOCKS代理,请使用:Host myserver User user DynamicForward 5000
bonh

15

对的,这是可能的。

运行ssh -D port user@host并设置您的客户端,以将您的盒子用作SOCKS代理。

如果您特别需要HTTP代理,则可以使用代理链并通过以前的SOCKS对其进行路由。


5

腻子也做得很好。

在SSH下,转到隧道。在底部,将8080放在端口中,并在目的地处将其保留为黑色,然后选择“动态”单选按钮。这就是您需要做的所有事情,现在使用Putty连接到服务器。

连接后,您将在本地主机上的端口8080上运行代理服务器,该代理服务器将代理服务器中的所有请求。

现在使用Web浏览器并通过设置host = localhost和port = 8080来设置代理,并确保它是您选择的SOCKS代理。我一直都这样做,因此,如果您使用Firefox,请确保安装FoxyProxy插件,因为它可以一键打开/关闭代理。

注意:请注意,默认情况下,不代理您的DNS请求。因此,您通过代理访问的网站仍将被记录(如果他们记录了这些信息)。您也可以将firefox设置为代理DNS请求,默认情况下它只是不这样做。



2

要允许代理在计算机上运行并允许其他客户端连接,您需要-g选项。因此,例如,您可以在名为foo的服务器上运行此命令:

ssh -g -ND 9191 root@remotehost

然后,您可以在客户端的浏览器中设置代理,以将服务器foo和端口9191用于SOCKS代理。客户端也将他们的请求发送为foo,后者又将通过ssh将请求转发到remotehost。因此,在互联网上,看起来他们正在使用remotehost。

如果您也想使用firefox转发DNS请求,请在firefox中编辑about:config并将network.proxy.socks_remote_dns设置为true。


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.