如果使用 SOCKS 的 ssh 连接失败,该怎么办?自动切换到无代理?

如果使用 SOCKS 的 ssh 连接失败,该怎么办?自动切换到无代理?

现在我正在批处理程序中使用 plink,如果连接断开,它会重新连接到我的 SSH 服务器。我使用 plink 连接和 socks 代理 (firefox) 转发我的所有浏览器流量。除了一件事外,效果很好!

如果由于某些奇怪的原因我无法访问我的 ssh 服务器,我必须转到 Firefox 中的选项并将我的设置恢复为无代理。这是可以做到的,但很烦人!

那么我该如何在 Firefox 中保持我的 SOCKS 代理连接,但如果我无法连接到我的 SSH 服务器,我该如何在 Firefox 中自动切换到自动检测代理/无代理设置?

我认为我可以使用 Firefox 命令行参数和批处理例程来执行此操作,但我认为这是不可能的。我确实通过此链接看到了代理设置的存储位置,但这是否意味着我必须根据 .js 文件中的上述场景更改代理设置? https://stackoverflow.com/questions/843340/firefox-proxy-settings-via-command-line

答案1

我不知道有什么方法可以做到这一点,它内置在浏览器中,甚至通过你提到的自动化,但是福克斯代理扩展确实使管理代理设置变得更加容易。

另外,你也许可以破解一个PAC 文件可以检查你的代理服务器是否启动,如果是,则使用它,否则绕过。

编辑: 根据原始 PAC 规格来自 Netscape,如果您返回多个以分号分隔的代理服务器,它将按顺序尝试它们,如果其中一个失败则回退。因此,您可以使用如下所示的 PAC 文件(应该可以工作,但未经测试):

function FindProxyForURL(url, host)
{
    return 'SOCKS5 myhost:8080; DIRECT';
}

注意:用于PROXY myhost:myport非 SOCKS 代理。

答案2

好的,在 heavyd 的帮助下,您可以这样使用 SSH 客户端(plink、putty、linux 客户端等),通过使用 Firefox 和 FoxyProxy,将所有 http:、https: 流量转发到 SSH 服务器所在的位置(另一个 ISP),条件是,如果 SSH 连接失败,firefox 中的 SOCKS 代理将默认为无代理设置(直接)。

注意:FoxyProxy 可与其他 Web 浏览器一起使用,但下面的说明中使用了带有 FoxyProxy 插件的 Firefox。

1.) 确保您已配置 SSH 服务器,以便您可以从另一个 ISP 访问它。(建议:重新配置 SSH 服务器端口。谁不知道默认端口 22 是 SSH,所以更改它!)

2.) 确保您的 SSH 客户端已配置并且可以从另一个 ISP 访问您的 SSH 服务器。(例如咖啡店=SSH 客户端,家=SSH 服务器 == 连接成功)。

3.) 从 SSH 客户端动态转发端口。这意味着设置隧道以转发任意端口号的源端口。例如 -d 4543。记下这个端口号!您将在下面需要它!

4.)下载并安装最新版本的 Firefox。

5.) 下载适用于 Firefox 的 FoxyProxy 附加组件。如果启用了 FoxyProxy。您将在地址栏右侧看到一个狐狸图标。单击图标以配置 foxyproxy。

6.) 从文本编辑器创建 PAC 文件。将文件保存为扩展名 .PAC 。将其保存在您能记住的位置。使用以下内容作为 PAC 文件的内容。将 mylocalhost 替换为 127.0.0.1,将 Port 替换为您上面创建的动态端口。

函数 FindProxyForURL(url,host) { 返回'SOCKS5 mylocalhost:PORT; DIRECT'; }

7.) 获得 .pac 文件后,使用 Firefox 查找文件。将位置地址复制到 Firefox 地址栏中,输出应为 Firefox 看到的 .pac 文件的位置。(Windows 示例:file:///C:/)。(不要将文件放在根目录中!C:=root)复制 Firefox 位置地址。

8.) 单击 Firefox 中的图标打开 FoxyProxy。单击添加新代理。选择自动代理配置并插入 Firefox 可以查看的 .PAC 文件的位置。(例如 file:///C:/)。单击确定。

9.) 现在测试 SSH 服务器连接和 SSH 连接!使用http://whatismyip.org以确保 SOCKS 代理正常工作。

相关内容