Jakub Arnold Asked: 2009-10-27 07:23:54 +0800 CST2009-10-27 07:23:54 +0800 CST 2009-10-27 07:23:54 +0800 CST 我可以像代理一样创建 SSH 以通过服务器隧道传输 HTTP 吗? 772 说我有一个serverand client。我需要像代理一样创建从client到一个的website连接。server 是否可以使用 SSH 隧道来执行此操作,或者我是否必须安装一些代理服务server? ssh 8 个回答 Voted Best Answer Wienczny 2009-10-27T07:28:50+08:002009-10-27T07:28:50+08:00 您可以使用 ssh 执行此操作 ssh -L 80:remotehost:80 user@myserver 然后,您将拥有从本地端口 80 到远程主机端口 80 的隧道。这不必与 myserver 相同。要使其透明,您应该在 hosts 文件中添加一个条目。如果你不这样做,虚拟主机将无法工作。如果你想要一个 SOCKS 代理连接,你也可以使用 ssh -D 5000 user@myserver 这将在 localhost 端口 5000 上创建一个 SOCKS 代理,该代理通过 myserver 路由所有请求。 mr-euro 2009-10-27T07:28:42+08:002009-10-27T07:28:42+08:00 对的,这是可能的。 运行ssh -D port user@host并设置您的客户端以将您的盒子用作 SOCKS 代理。 如果您特别需要 HTTP 代理,则可以使用 Proxychains 并通过以前的 SOCKS 路由它。 Kasper Grubbe 2014-06-25T07:11:04+08:002014-06-25T07:11:04+08:00 sshuttle 像 VPN 一样工作,但通过 SSH。 用作穷人 VPN 的透明代理服务器。通过 ssh 转发。不需要管理员。适用于 Linux 和 MacOS。支持 DNS 隧道。 https://github.com/sshuttle/sshuttle J Sidhu 2009-10-27T07:58:45+08:002009-10-27T07:58:45+08:00 腻子在这方面也做得很好。 在 SSH 下,转到隧道。在底部,将 8080 放入端口,对于目的地,将其留空并选择“动态”单选按钮。这就是您需要做的所有事情,现在使用 Putty 连接到服务器。 连接后,您将在 localhost 的 8080 端口上运行一个代理服务器,它将代理通过您的服务器的所有请求。 现在使用 Web 浏览器并通过设置 host=localhost 和 port=8080 来设置代理,并确保它是您选择的 SOCKS 代理。我一直这样做,所以如果你使用 Firefox,请确保安装 FoxyProxy 插件,因为它可以让打开/关闭代理成为一键式的事情。 注意:请注意,默认情况下,您的 DNS 请求不会被代理。因此,您通过代理访问的网站仍将被记录(如果他们记录这些内容)。您也可以将 firefox 设置为代理 DNS 请求,默认情况下它不会这样做。 Kyle Brandt 2009-10-27T07:40:17+08:002009-10-27T07:40:17+08:00 要允许代理在计算机上运行,并允许其他客户端连接到您,将需要 -g 选项。因此,例如,您将在名为 foo 的服务器上运行它: ssh -g -ND 9191 root@remotehost 然后,您可以在客户端的浏览器中设置代理以将服务器 foo 和端口 9191 用于 SOCKS 代理。客户端也会发送他们的请求,foo 反过来会通过 ssh 将请求转发到 remotehost。所以在互联网上,看起来他们正在使用远程主机。 如果您还想使用 firefox 转发 DNS 请求,请在 firefox 中编辑 about:config 并将 network.proxy.socks_remote_dns 设置为 true。 perfecto25 2019-10-24T13:45:56+08:002019-10-24T13:45:56+08:00 您可以使用 SSHUTTLE,这里有一个关于如何使用它的教程, https://etherarp.net/sshuttle-a-vpn-for-the-lazy/ 这是一个教程如何设置它作为服务工作, https://medium.com/@mike.reider/using-sshuttle-as-a-service-bec2684a65fe Rapace-bleu 2021-02-22T22:20:38+08:002021-02-22T22:20:38+08:00 我在尝试转发套接字时遇到了一些困难。特别是在 nginx 使用套接字为基于烧瓶的网站提供服务的情况下:这是我的经验: 套接字转发可以这样写: ssh -R /run/temp1.sock:/run/temp2.sock somehost -N temp1.sock 是指远程站点上的套接字。 ssh 不接受使用现有的远程套接字,但需要创建它。它是使用 600 权限创建的,因此在创建后,必须通过向 www-data 用户添加 w/r 权限使其对 nginx 可用。 Deloo 2021-11-19T02:10:32+08:002021-11-19T02:10:32+08:00 使用 SSH 的 HTTP 隧道的简单教程 乍一看,我不明白最重要的答案,所以我找了一个教程。这是我学到和取得的成就。 设置 您在您的client机器上,即您可以在其中输入命令的任何计算机。您想连接到一台名为 的机器remotehost,同时通过一台名为 的机器隧道传输您的流量proxyhost。您可以使用 ssh 连接到proxyhost. remotehost无法从您到达client,但可以从 到达proxyhost。 脚步 在您的 上client,运行以下命令: ssh <local-port>:<remotehost>:<remote-port> <username-on-proxy>@<proxyhost> 在哪里 <local-port>是你的一个自由端口client,比如 8000; <remotehost>是机器的域名或ip remotehost。请注意,此域名或 ip 对您的client. 重要的部分是对您的proxyhost. *。<remote-port>是您要访问的端口remotehost,例如 80 用于 http 或 443 用于 https。*。<username-on-proxy>@<proxyhost>是您proxyhost使用 ssh 和您在该机器上的帐户访问的方式。 此时,您可以导航到localhost:<local-port>并浏览/使用remotehost的资源。
您可以使用 ssh 执行此操作
然后,您将拥有从本地端口 80 到远程主机端口 80 的隧道。这不必与 myserver 相同。要使其透明,您应该在 hosts 文件中添加一个条目。如果你不这样做,虚拟主机将无法工作。如果你想要一个 SOCKS 代理连接,你也可以使用
这将在 localhost 端口 5000 上创建一个 SOCKS 代理,该代理通过 myserver 路由所有请求。
对的,这是可能的。
运行
ssh -D port user@host
并设置您的客户端以将您的盒子用作 SOCKS 代理。如果您特别需要 HTTP 代理,则可以使用 Proxychains 并通过以前的 SOCKS 路由它。
sshuttle 像 VPN 一样工作,但通过 SSH。
https://github.com/sshuttle/sshuttle
腻子在这方面也做得很好。
在 SSH 下,转到隧道。在底部,将 8080 放入端口,对于目的地,将其留空并选择“动态”单选按钮。这就是您需要做的所有事情,现在使用 Putty 连接到服务器。
连接后,您将在 localhost 的 8080 端口上运行一个代理服务器,它将代理通过您的服务器的所有请求。
现在使用 Web 浏览器并通过设置 host=localhost 和 port=8080 来设置代理,并确保它是您选择的 SOCKS 代理。我一直这样做,所以如果你使用 Firefox,请确保安装 FoxyProxy 插件,因为它可以让打开/关闭代理成为一键式的事情。
注意:请注意,默认情况下,您的 DNS 请求不会被代理。因此,您通过代理访问的网站仍将被记录(如果他们记录这些内容)。您也可以将 firefox 设置为代理 DNS 请求,默认情况下它不会这样做。
要允许代理在计算机上运行,并允许其他客户端连接到您,将需要 -g 选项。因此,例如,您将在名为 foo 的服务器上运行它:
然后,您可以在客户端的浏览器中设置代理以将服务器 foo 和端口 9191 用于 SOCKS 代理。客户端也会发送他们的请求,foo 反过来会通过 ssh 将请求转发到 remotehost。所以在互联网上,看起来他们正在使用远程主机。
如果您还想使用 firefox 转发 DNS 请求,请在 firefox 中编辑 about:config 并将 network.proxy.socks_remote_dns 设置为 true。
您可以使用 SSHUTTLE,这里有一个关于如何使用它的教程,
https://etherarp.net/sshuttle-a-vpn-for-the-lazy/
这是一个教程如何设置它作为服务工作,
https://medium.com/@mike.reider/using-sshuttle-as-a-service-bec2684a65fe
我在尝试转发套接字时遇到了一些困难。特别是在 nginx 使用套接字为基于烧瓶的网站提供服务的情况下:这是我的经验:
套接字转发可以这样写:
temp1.sock 是指远程站点上的套接字。 ssh 不接受使用现有的远程套接字,但需要创建它。它是使用 600 权限创建的,因此在创建后,必须通过向 www-data 用户添加 w/r 权限使其对 nginx 可用。
使用 SSH 的 HTTP 隧道的简单教程
乍一看,我不明白最重要的答案,所以我找了一个教程。这是我学到和取得的成就。
设置
您在您的
client
机器上,即您可以在其中输入命令的任何计算机。您想连接到一台名为 的机器remotehost
,同时通过一台名为 的机器隧道传输您的流量proxyhost
。您可以使用 ssh 连接到proxyhost
.remotehost
无法从您到达client
,但可以从 到达proxyhost
。脚步
client
,运行以下命令:ssh <local-port>:<remotehost>:<remote-port> <username-on-proxy>@<proxyhost>
在哪里
<local-port>
是你的一个自由端口client
,比如 8000;<remotehost>
是机器的域名或ipremotehost
。请注意,此域名或 ip 对您的client
. 重要的部分是对您的proxyhost
. *。<remote-port>
是您要访问的端口remotehost
,例如 80 用于 http 或 443 用于 https。*。<username-on-proxy>@<proxyhost>
是您proxyhost
使用 ssh 和您在该机器上的帐户访问的方式。localhost:<local-port>
并浏览/使用remotehost
的资源。