SSH 袜子服务器

SSH Socks Server

我正在尝试 运行 Windows 7 上的 ssh SOCKS 服务器(侦听端口 12345)。 这是我在 Cygwin 上得到的输出:

$ ssh -v -D 12345 localhost
OpenSSH_6.8p1, OpenSSL 1.0.2c 12 Jun 2015
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to localhost [::1] port 22.
debug1: connect to address ::1 port 22: Connection refused
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: connect to address 127.0.0.1 port 22: Connection refused
ssh: connect to host localhost port 22: Connection refused

为什么要连接到 localhost:22? 看起来它正试图访问本地主机上的 sshd 运行ning。 我认为 ssh 客户端足以设置本地 SOCKS 服务器。如果不是,为什么我需要 sshd 运行ning?

来自https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding

"Dynamic port forwarding turns your SSH client into a SOCKS proxy server"

您尝试在没有端口的情况下进行连接。所以使用端口22。打开该连接后,SSH 将在您指定的端口 (12345)

上设置 socks 代理

您需要连接到有效的 SSH 服务器。您使用 -p 标志指定端口

解释为什么你需要一个(远程)ssh服务器,ssh可以做三种(或四种)转发;引用 the man page:

-L 指定本地(客户端)主机上的给定端口是 转发到远程端的给定主机和端口。这个 通过分配一个套接字来监听本地端的端口, 可选择绑定到指定的 bind_address。每当一个CON- 连接到这个端口,连接被转发 安全通道,并与主机端口建立连接 来自远程机器的主机端口。 [...]

-R 指定远程(服务器)主机上的给定端口用于 被转发到本地的给定主机和端口。这个 通过分配一个套接字来监听远程端口 侧,每当连接到该端口时,连接 化通过安全通道转发,并且连接是 从本地机器主机端口主机端口。 [...]

-D 指定本地“动态”应用程序级端口转发。 这通过分配一个套接字来监听本地端口来工作 边,可选择绑定到指定的 bind_address。每当一个 连接到这个端口,连接被转发 安全通道,然后使用应用程序协议 确定从远程机器连接到哪里。现在 支持 SOCKS4 和 SOCKS5 协议,ssh 将起作用 作为 SOCKS 服务器。 [...]

-X-Y 为 X11 启用转发。这是 -R.

的一个小而方便的变体

请注意,在所有情况下,数据都通过 ssh 隧道转发,从本地计算机到 ssh 服务器或反向,并且(因此)ssh 隧道必须存在才能转发数据。 -L-D的唯一区别是-D在本端使用SOCKS4/5来指定,其中 远程端连接到。

如果你想要一个直接从代理连接到目的地的 SOCKS 代理,而不是通过 ssh 隧道,你需要一个普通的 SOCKS 代理,而不是 ssh+sshd.