首页 > 编程知识 正文

ssh socks代理(如何修改ssh端口)

时间:2023-05-03 11:11:11 阅读:102725 作者:2544

当我们谈论使用SSH进行动态端口转发时,我们谈论的是将SSH服务器转换为SOCKS服务器。艾哈迈德

编译自:https://我们分享这个.com/2017/07/15/dynamic-port-forwarding-mount-socks-server-ssh/by Ahmad

翻译:firmianay

在上一篇文章(通过SSH实现TCP/IP隧道(端口转发):使用OpenSSH的八种可能场景[1])中,我们看到了处理端口转发的所有可能情况,但那只是静态端口转发。也就是说,我们只介绍了通过SSH连接访问另一个系统的端口的情况。

在那篇文章中,我们没有处理动态端口转发。另外,有些读者没有看过这篇文章,这篇文章会努力完成。

当我们谈论使用SSH进行动态端口转发时,我们谈论的是将SSH服务器转换为SOCKS[2]服务器。那么什么是SOCKS服务器呢?

你知道Web代理[3]是用来做什么的吗?答案可能是肯定的,因为很多公司都在使用它。这是一个直接连接到互联网的系统,它允许没有互联网接入的内部网[4]客户端通过代理(尽管也有透明的代理[5])让其浏览器浏览网页。Web代理可以缓存页面、图像等。除了允许输出到互联网。一个客户端下载的资源,另一个客户端不必下载。此外,它还可以过滤内容和监控用户的活动。当然,它的基本功能是转发HTTP和HTTPS流量。

SOCKS服务器提供的服务类似于公司内部网络提供的代理服务器服务,但不限于HTTP/HTTPS。它还允许转发任何TCP/IP流量(SOCKS 5也支持UDP)。

例如,假设我们想在没有直接连接到互联网的内部网中通过雷鸟使用POP3、ICMP和SMTP邮件服务。如果我们只有一个网络代理可以使用,我们唯一可以使用的简单方法是使用一个网络邮件(雷鸟的网络邮件扩展也可以使用[6])。我们也可以使用HTTP隧道作为代理。但是最简单的方法就是在网络中设置一个SOCKS服务器,这样我们就可以使用POP3、ICMP和SMTP,没有任何不便。

虽然有很多软件可以配置非常专业的SOCKS服务器,但是用OpenSSH设置一个只需要一个简单的命令:

cliessh $ ssh-d 1080 user @ servicedorsh或者我们可以改进它:

cliessh $ ssh-fn-d 0 . 0 . 0 . 0:1080 user @ servicedorsh其中:

选项-D类似于带有选项-L和-r的静态端口转发。像这些选项一样,我们可以让客户端只监听本地请求或来自其他节点的请求,这取决于我们将请求与哪个地址相关联:

-D [bind_address:]端口在静态端口转发中,我们可以看到我们使用-R选项进行反向端口转发,但是动态转发是不可能的。我们只能在SSH客户端上创建SOCKS服务器,不能在SSH服务器上创建。

1080是SOCKS服务器的典型端口,就像8080是Web代理服务器的典型端口一样。

选项-N阻止远程外壳交互会话实际启动。当我们只使用ssh构建隧道时,它非常有用。

Option -f将使ssh留在后台,并将其与当前shell分离,从而使进程成为守护进程。如果没有选项-N(或者没有指定命令),它将不起作用,否则交互式shell将与后台进程不兼容。

使用PuTTY[7]还可以使端口重定向变得非常简单。ssh -D 0.0.0.0:1080的等效配置如下:

油灰袜子

对于通过SOCKS服务器访问另一个网络的应用程序,如果该应用程序为SOCKS服务器提供特殊支持,将会非常方便(虽然不是必须的),就像浏览器支持代理服务器一样。例如,火狐或互联网浏览器等浏览器使用SOCKS服务器访问另一个网络中的应用程序:

Firefox SOCKS

互联网浏览器

KS

注意:上述截图来自 IE for Linux[8] :如果您需要在 Linux 上使用 Internet Explorer,强烈推荐!

然而,最常见的浏览器并不要求 SOCKS 服务器,因为它们通常与代理服务器配合得更好。

不过,Thunderbird 也支持 SOCKS,而且很有用:

Thunderbird SOCKS

另一个例子:Spotify[9] 客户端同样支持 SOCKS:

Spotify SOCKS

需要关注一下名称解析。有时我们会发现,在目前的网络中,我们无法解析 SOCKS 服务器另一端所要访问的系统的名称。SOCKS 5 还允许我们通过隧道传播 DNS 请求( 因为 SOCKS 5 允许我们使用 UDP)并将它们发送到另一端:可以指定是本地还是远程解析(或者也可以两者都试试)。支持此功能的应用程序也必须考虑到这一点。例如,Firefox 具有参数 network.proxy.socks_remote_dns(在 about:config 中),允许我们指定远程解析。而默认情况下,它在本地解析。

Thunderbird 也支持参数 network.proxy.socks_remote_dns,但由于没有地址栏来放置 about:config,我们需要改变它,就像在 MozillaZine:about:config[10] 中读到的,依次点击 工具 → 选项 → 高级 → 常规 → 配置编辑器(按钮)。

没有对 SOCKS 特别支持的应用程序可以被 sock 化socksified。这对于使用 TCP/IP 的许多应用程序都没有问题,但并不是全部。“sock 化” 需要加载一个额外的库,它可以检测对 TCP/IP 堆栈的请求,并修改请求,以通过 SOCKS 服务器重定向,从而不需要特别编程来支持 SOCKS 便可以正常通信。

在 Windows 和 Linux[11] 上都有 “Sock 化工具”。

对于 Windows,我们举个例子,SocksCap 是一种闭源,但对非商业使用免费的产品,我使用了很长时间都十分满意。SocksCap 由一家名为 Permeo 的公司开发,该公司是创建 SOCKS 参考技术的公司。Permeo 被 Blue Coat[12] 买下后,它停止了 SocksCap 项目[13]。现在你仍然可以在互联网上找到 sc32r240.exe 文件。FreeCap[14] 也是面向 Windows 的免费代码项目,外观和使用都非常类似于 SocksCap。然而,它工作起来更加糟糕,多年来一直没有缺失维护。看起来,它的作者倾向于推出需要付款的新产品 WideCap[15]。

这是 SocksCap 的一个界面,可以看到我们 “sock 化” 了的几个应用程序。当我们从这里启动它们时,这些应用程序将通过 SOCKS 服务器访问网络:

SocksCap

在配置对话框中可以看到,如果选择了协议 SOCKS 5,我们可以选择在本地或远程解析名称:

SocksCap settings

在 Linux 上,如同往常一样,对某个远程命令我们都有许多替代方案。在 Debian/Ubuntu 中,命令行:

$ Apt-cache search socks

的输出会告诉我们很多。

最著名的是 tsocks[16] 和 proxychains[17]。它们的工作方式大致相同:只需用它们启动我们想要 “sock 化” 的应用程序就行。使用 proxychains 的 wget 的例子:

$ Proxychains wget http://www.google.com

ProxyChains-3.1 (http://proxychains.sf.net)

--19: 13: 20-- http://www.google.com/

Resolving www.google.com ...

DNS-request | Www.google.com

| S-chain | - <- - 10.23.37.3:1080-<><>-4.2.2.2:53-<><>-OK

| DNS-response | Www.google.com is 72.14.221.147

72.14.221.147

Connecting to www.google.com | 72.14.221.147 |: 80 ...

| S-chain | - <- - 10.23.37.3:1080-<><>-72.14.221.147:80-<><>-OK

Connected.

HTTP request sent, awaiting response ... 200 OK

Length: unspecified [text / html]

Saving to: `index.html '

[<=>] 6,016 24.0K / s in 0.2s

19:13:21 (24.0 KB / s) - `index.html 'saved [6016]

要让它可以工作,我们必须在 /etc/proxychains.conf 中指定要使用的代理服务器:

[ProxyList]

Socks5 clientessh 1080

我们也设置远程进行 DNS 请求:

# Proxy DNS requests - no leak for DNS data

Proxy_dns

另外,在前面的输出中,我们已经看到了同一个 proxychains 的几条信息性的消息, 非 wget 的行是标有字符串 |DNS-request|、|S-chain| 或 |DNS-response| 的。如果我们不想看到它们,也可以在配置中进行调整:

# Quiet mode (no output from library)

Quiet_mode


via: https://wesharethis.com/2017/07/15/dynamic-port-forwarding-mount-socks-server-ssh/

作者:Ahmad[18] 译者:firmianay 校对:jasminepeng

本文由 LCTT 原创编译,Linux中国 荣誉推出

点击“了解更多”可访问文内链接

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。