动态向前(-D)是如何在引擎盖下工作的?
我了解到SSH动态转发会在本地主机上打开一个SOCSK4代理,并且到SOCK4代理的每个连接都通过SSH隧道转发到远程目的地。
SSH是否拦截到SOCKS4代理的连接?我的意思是,它不能是“正常”的SOCKS4代理,因为它将直接代理到远程主机的连接。
此外,SSH如何处理来自远程主机的响应,即如何通过SSH隧道将它们传输回本地主机上的接收方?
发布于 2018-07-15 11:17:03
当给定-D标志时,SSH客户端将启动内置SOCKS4 4/5代理。(注:“袜子”,而不是“袜子”)。
-D bind_address:port 指定本地“动态”应用程序级端口转发。这是通过分配一个套接字来侦听本地端的端口(可以选择绑定到指定的bind_address )来实现的。每当连接到此端口时,该连接将通过安全通道转发,然后应用协议用于确定从远程计算机连接到何处。目前支持SOCKS4和SOCKS5协议,ssh将充当SOCKS服务器。
当另一个应用程序希望连接到代理服务时,它们将通过此SOCKS服务器建立连接。SOCKS协议是在连接开始时发生的一点协商,如下所示:(受维基页面的启发)
ssh -D 1234 user@remote被执行,SSH客户端启动一个SOCKS代理服务器,监听端口1234。remote)协商建立这个向前的连接。这可能会失败。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”)关联起来非常简单。
https://stackoverflow.com/questions/51347627
复制相似问题