SSH 隧道不起作用

SSH 隧道不起作用

我使用以下命令建立到我的 ubuntu 服务器的 ssh 隧道:

ssh -fNg -L 8888:127.0.0.1:22 -p 1000 username@server-address  -v

然后我将 OSX http 和 https 代理设置为 127.0.0.1:8888

我收到以下错误:

SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2

协议不匹配。

这是什么问题?我该如何解决?

答案1

-L 8888:localhost:22 将把您本地的 8888 端口转发到 ssh 服务器的 22 端口。只要没有 squid 服务器或其他代理正在运行,它就不会起作用。

SSH 可以提供 socks 代理,您可以使用它来浏览您的 ssh 隧道。

ssh -fNg -D 8888 -p 1000 username@server-address  -v

连接后只需设置代理:

localhost:8888

答案2

你写道“我使用以下命令与我的 ubuntu 服务器建立 ssh 隧道:

ssh -fNg -L 8888:127.0.0.1:22 -p 1000 用户名@服务器地址 -v

好的,所以你需要在端口 1000 上有一个 SSH 服务器

好的,因此客户端程序将连接到端口 8888,并且它发送到那里的任何内容都将被转发到端口 22(22 是 ssh 常用的端口)。

我想如果你试图在 ssh 中隧道化 ssh 这可能是有意义的,尽管我无法一下子想到这样做的必要性!

然后我将 OSX http 和 https 代理设置为 127.0.0.1:8888”

不,您已经让 SSH 打开一个端口来监听 8888 端口。您不能让其他东西监听该端口。

如果您将 http[s] 代理放在目标计算机(服务器地址)的端口 22 上,并将 Web 浏览器配置为使用代理 127.0.0.1:8888,那么您的 Web 浏览器可以连接到端口 8888,并将转发到目标计算机端口 22 上的 http 代理。当您这样做时,-L 8888:127.0.0.1:22意味着您必须在目标计算机的端口 22 上监听某些东西。您可能希望将 22 更改为更合理的值,例如 8080 我还没有测试过,但我认为它会起作用

另外,SSH 也有一个 -D 选项,它充当可以执行 HTTP[s] 的 SOCKS 代理,但会告诉 Web 浏览器连接到 SOCKS 代理而不是常规 HTTPS。所以我想,就像 David 说的那句话一样,ssh -fNg -D 8888 -p 1000 username@server-address -v -fNg 和 -v 当然不是必需的。

相关内容