![问题与解决方案](https://linux22.com/image/1405540/%E9%97%AE%E9%A2%98%E4%B8%8E%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.png)
服务器上已设置 freeSSHd。Putty 已成功通过 SSH 连接到服务器。我尝试配置 SOCKS5 和 HTTP 隧道,但未能成功。特别是在 Opera 上进行了测试,其中代理设置为127.0.0.1
和端口1080
。
我正在尝试通过这种方式在 Putty 中设置 SOCKS5 代理/隧道:Connection>SSH>Tunnels
我在那里设置:
Source port
1080
Destination
127.0.0.1
Dynamic
IPv4
为什么 SOCKS5 代理隧道不起作用?
更新:
Firefox 提示“代理服务器拒绝连接”
更新2:
设置全部相同但留空Destination
。
Firefox 消息:
连接被重置
The connection to the server was reset while the page was loading.
The site could be temporarily unavailable or too busy. Try again in a few moments.
If you are unable to load any pages, check your computer's network connection.
If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the Web.
更新 3
Firefox 拒绝连接google.com
并显示错误:The connection was reset
。Opera 无法运行。(重置代理配置后即可运行)
更新 4
Putty 如何处理网络连接?此 cmd 中有时会出现TCP 127.0.0.1:1080 LISTENING
。其余 2 个具有 1080 端口的 TCP 连接是什么?客户端命令:
更新 5:
服务器上的 freeSSHd 配置:
更新 6:
我让Deluge
torrent 客户端成功通过 SSH 隧道运行(使用 SOCKS5)!互联网浏览器仍然无法连接到网络(SOCKS5 或 HTTP 代理设置均不起作用)。
答案1
假设您的意思是从 Windows 访问外部 SOCKS 代理,请看这里。如果您的意思是设置 Windows 中的 SSH 服务器,cygwin 可以使用 来完成此操作sshd
。
在 Windows 中,cygwin 使这变得简单,但如果您还没有 cygwin,这里是 PuTTY 说明。
像这样设置:
将端口 2222 替换为 22 或任何用于 SSH 的端口。将其留空也应该有效。22 是默认值,但我将其设置为非标准端口。将此处的 127.0.0.1 替换为您的实际地址。
在这里,将 127.0.0.1 保留原位。它应该在那里。您可以将 8080 更改为您希望 SOCKS 代理所在的任何端口。
确保将登录用户名设置为您自己的用户名。我的 iPhone 上的用户名是“mobile”,我在为 Apple Stack Exchange 制作此示例时使用的是这个用户名。
如果需要,您可以为此保存一个配置文件,以避免每次遇到问题时都重新设置。这可以在最顶部的“会话”部分中完成。
Linux/Unix/BSD/Solaris/OSX/HP-UX/其他我还缺少什么
你可以运行ssh -D 8080 user@address
现在,您需要打开您选择的 Web 浏览器;我使用 Firefox,因此我将使用它作为示例。我使用过 Chrome 和 Opera,但由于我不喜欢它们并且目前没有安装它们,因此目前无法将其用作示例。但您可以将其设置为 SOCKS 代理,无论使用哪种浏览器。
这些截图是用转发的 X11 完成的,所以字体很丑,但不要介意。
首先,转到首选项窗口(tools -> options
或edit -> preferences
,取决于操作系统)。然后,转到Advanced -> Network -> Settings...
。
对浏览器使用以下配置。
问题与解决方案
问题:
我的应用程序不允许设置 SOCKS 代理。
解决方案:
我在玩 Minecraft 等游戏时也遇到过这个问题。这里有一些修复方法。
对于 minecraft,我向 添加了参数ssh
。我经常在 nerd.nu reddit minecraft 服务器 (reddit.com/r/mcpublic) 上玩游戏。自 minecraft 1.6 以来,设置为命令行参数的 SSH 隧道和 SOCKS 代理已不起作用。以前您可以添加 java 参数-DSocksProxyHost=127.0.0.1 -DSocksProxyPort=8080
,这样就可以正常工作。但是,现在的解决方案不是那么好,但它确实有效。
启动时,请执行ssh
而不是。然后,当您想要连接到服务器时,只需将 URL 添加到服务器列表中即可!得益于 SSH 隧道的奇迹,远程服务器将出现在 127.0.0.1/localhost 上!ssh -D 8080 user@address
ssh -D 8080 -L 127.0.0.1:25565:p.nerd.nu:25565 user@address
127.0.0.1:25565
对于其他程序/游戏,同样的规则也适用。如果您无法设置 SOCKS 代理,并且其他方法都不起作用,只需添加-L 127.0.0.1:<port>:<remote URL to access>:<remote port>
。
没有什么强迫您使用与127.0.0.1
通常相同的端口,因此我可以例如映射p.nerd.nu:25565
到127.0.0.1:1025
,只要我指定端口,游戏就不会在意。并非所有程序都如此宽容,但记住这一点很有用。