【问题标题】:SSH Socks ServerSSH 袜子服务器
【发布时间】:2015-11-22 11:04:51
【问题描述】:

我正在尝试在 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? 看起来它正在尝试访问在 localhost 上运行的 sshd。 我认为 ssh 客户端足以设置本地 SOCKS 服务器。如果不是,为什么我需要运行 sshd?

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

“动态端口转发将您的 SSH 客户端变成 SOCKS 代理服务器”

【问题讨论】:

    标签: ssh port socks


    【解决方案1】:

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

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

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

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

    -X-Y 为 X11 启用转发。这是-R 的一个小而方便的变体。

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

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

    【讨论】:

    • 非常感谢@dave_thompson_085,这回答了我的问题。
    【解决方案2】:

    您尝试在没有端口的情况下进行连接。所以使用了 22 端口。一旦该连接打开,SSH 将在您指定的端口 (12345) 上设置 socks 代理

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

    【讨论】:

    • 谢谢@exussum。您是说“ssh -D”将设置一个 SOCKS 代理,将 SOCKS 请求转发到 sshd 服务器,对吧?
    猜你喜欢
    • 2013-09-30
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 2020-09-15
    相关资源
    最近更新 更多