首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态向前(-D)是如何在引擎盖下工作的?

动态向前(-D)是如何在引擎盖下工作的?
EN

Stack Overflow用户
提问于 2018-07-15 10:46:29
回答 1查看 985关注 0票数 2

动态向前(-D)是如何在引擎盖下工作的?

我了解到SSH动态转发会在本地主机上打开一个SOCSK4代理,并且到SOCK4代理的每个连接都通过SSH隧道转发到远程目的地。

SSH是否拦截到SOCKS4代理的连接?我的意思是,它不能是“正常”的SOCKS4代理,因为它将直接代理到远程主机的连接。

此外,SSH如何处理来自远程主机的响应,即如何通过SSH隧道将它们传输回本地主机上的接收方?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-15 11:17:03

当给定-D标志时,SSH客户端将启动内置SOCKS4 4/5代理。(注:“袜子”,而不是“袜子”)。

-D bind_address:port 指定本地“动态”应用程序级端口转发。这是通过分配一个套接字来侦听本地端的端口(可以选择绑定到指定的bind_address )来实现的。每当连接到此端口时,该连接将通过安全通道转发,然后应用协议用于确定从远程计算机连接到何处。目前支持SOCKS4和SOCKS5协议,ssh将充当SOCKS服务器

当另一个应用程序希望连接到代理服务时,它们将通过此SOCKS服务器建立连接。SOCKS协议是在连接开始时发生的一点协商,如下所示:(受维基页面的启发)

  1. ssh -D 1234 user@remote被执行,SSH客户端启动一个SOCKS代理服务器,监听端口1234。
  2. 本地应用程序希望通过SOCKS代理与服务通信,因此连接到端口1234。
  3. SOCKS客户端请求连接到特定的IP地址和端口-例如: 66.102.7.99,端口4321。
  4. SOCKS服务器(在本例中是SSH客户端)将与其服务器(从上面的remote)协商建立这个向前的连接。这可能会失败。
  5. SOCKS服务将响应客户的成功/失败信息。
  6. 如果成功,通过这个套接字传递的所有数据现在将被适当地转发:
    • 从本地应用程序到SSH服务器(remote),然后转到66.102.7.99
    • 66.102.7.99到SSH服务器(remote),然后转到本地SSH客户端,最后是本地应用程序。

SSH是否拦截到SOCK4代理的连接?

不,SSH客户端是SOCKS代理。

我的意思是,它不能是“正常”的SOCK4代理,因为它将直接代理到远程主机的连接。

我认为这并不是真正的- SSH客户端和服务器将一起作用于,以实现“正常”SOCKS代理的功能。高级别的结果是,代理监听一个主机,但转发来自另一个主机的数据,其间有一个神奇的链接。

此外,SSH如何处理来自远程主机的响应,即如何通过SSH隧道将它们传输回本地主机上的接收方?

TCP是一种面向连接的通信方式.也就是说,一旦建立了一个连接,数据就可以双向流动,并且可靠地被确定为“与该连接有关”。有了这些信息,将数据与任意规则(如“转发到SSH服务器,谁将转发到66.102.7.99”)关联起来非常简单。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51347627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档