SSH动态转发(-D)在引擎盖下如何工作?

SSH动态转发(-D)在引擎盖下如何工作?,ssh,Ssh,SSH dynamic forward-D如何在后台工作 我知道SSH动态转发会在本地主机上打开一个SOCSK4代理,到SOCK4代理的每个连接都会通过SSH隧道转发到远程目标 SSH是否拦截到SOCKS4代理的连接?我的意思是,它不能是一个普通的SOCKS4代理,因为这样它将直接代理到远程主机的连接 此外,SSH如何处理来自远程主机的响应,即如何通过SSH隧道将它们传输回本地主机上的收件人?当给出-D标志时,SSH客户端将启动内置的SOCKS4/5代理。注意:袜子,不是袜子 指定本地“动态”应

SSH dynamic forward-D如何在后台工作

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

SSH是否拦截到SOCKS4代理的连接?我的意思是,它不能是一个普通的SOCKS4代理,因为这样它将直接代理到远程主机的连接

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

当给出-D标志时,SSH客户端将启动内置的SOCKS4/5代理。注意:袜子,不是袜子

指定本地“动态”应用程序级端口转发。这是通过在本地端分配一个套接字来侦听端口,可以选择绑定到指定的bind_地址。无论何时连接到此端口,都会通过安全通道转发连接,然后使用应用程序协议确定从远程计算机连接到何处。目前支持SOCKS4和SOCKS5协议,ssh将充当SOCKS服务器

当另一个应用程序希望连接到代理服务时,它们将通过此SOCKS服务器建立连接。SOCKS协议是在连接开始时进行的一点协商,如下所示:

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

不,SSH客户端是SOCKS代理

我的意思是,它不能是一个普通的SOCK4代理,因为这样它将直接代理到远程主机的连接

我想这并不是真的——SSH客户端和服务器协同工作以实现普通SOCKS代理的功能。高级结果是代理在一台主机上侦听,但转发来自另一台主机的数据,中间有一个神奇的链接

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


TCP是一种面向连接的通信方法。也就是说,一旦建立了连接,数据就可以在两个方向上流动,并且被可靠地标识为与该连接相关。有了这些信息,就可以将数据与任意规则关联起来,例如转发到SSH服务器,而SSH服务器将转发到66.102.7.99。

谢谢您给出了一个非常好的答案。应用程序协议在…中的确切含义是什么。。。然后,应用程序协议用于确定从远程计算机连接到何处。。这是对SOCKS代理的引用吗?我认为应用程序协议是指SSH协议。“应用程序级别”也是对SSH本身的引用吗?
-D [bind_address:]port