可能重复:
SSH 和端口转发 socks 代理
当我使用动态转发 (ssh -D) 设置隧道时,哪一端正在运行 SOCKS 代理?也就是说,代理是在本地端 (客户端) 还是在远程端 (服务器) 上运行?
情况如下:我想使用 建立多个串联的隧道-L
。-D
隧道应该是串联中的最后一个还是第一个?
编辑:我在 Super User 上找到了第二段的答案(隧道-D
应该在最远端)。但我仍然想知道代理代码在哪里运行。
答案1
快速浏览一下 OpenSSH 源代码可以发现:
本地ssh
客户端处理-D
非常简单,就像所有其他转发套接字一样:本地监听,通过通道推送到服务器。
远程sshd
服务器处理所涉及的所有代理SSH_CHANNEL_DYNAMIC
,包括解码 SOCKS 标头、建立出站连接和多路复用数据。