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
.
我正在尝试 运行 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
.