SSH反向袜子通道


26

ssh -D 可以在本地计算机上建立一个袜子端口,该端口将流量传递到远程,然后传递到其他地方。

ssh -L port:host:hostport,侦听本地计算机上的端口,从远程计算机的角度将流量传递到“ host:hostport”。

ssh -R port:host:hostport是的对应项ssh -L,它侦听远程计算机上的端口,并从本地计算机的角度将流量传递到“ host:hostport”。

但是,与之相对应的是什么ssh -D,即如何在远程计算机上打开一个袜子端口,该端口会将流量传递到本地,然后传递到其他地方?


1
该问题之所以失去价值,是因为您接受了一个无效且无效的答案。这(
回答者

Answers:


12

使用-D&,-L您可以在两台机器之间进行任何一种通信。

所以...

  • 在本地计算机上,用于-R在指向本地计算机的sshd的远程计算机上创建侦听端口。
  • -D在远程计算机上使用,指向上面创建的端口。

我“认为”在下面填写将使其工作...

ssh remotehost -R remoteport:localhost:localport "ssh -D 9050 localhost -p remoteport"

上面的“ remotehost”,“ remoteport”和“ localport”需要更改。一个袜子代理人将在9050年成立。


哦,看起来像这样在SO上被问到了:stackoverflow.com/questions/842021/…唯一的答案是相同的想法。我敢肯定一个人会工作的;-)编辑-是的,那比我的权利更正确。我已经修补好了。
昂贵的

实际上,我确实在自己的情况下使用了这种间接方法。但是在我的Firend情况下,他没有root特权,因此他不能拥有sshd服务,他只有OpenSSH客户端。所以我想找出一种直接方法,但是OpenSSH似乎不...谢谢您相同
Berry

1
@barlop无效,因为说您从10.0.0.10运行ssh可执行文件,-R表示要转发到10.0.0.10:9050,但是SOCKS服务器正在10.0.0.5上运行
barlop 2015年

1
@PriceChild您是否实际测试了命令?
barlop 2015年

5
-1您没有费心去测试它,您的命令是完全错误的。您尝试使其与其他SO答案一样,但没有成功。从A到B的SSH连接,您链接到的那个在ssh -D上监听A。您的那个在B上监听它。您的那是错误的。您正在侦听的一侧监听SOCKS代理。
barlop 2015年

14

可以通过〜/ .ssh / config中的此代码段透明地实现:

Host sockstunnel
    ProxyCommand ssh -D 3128 localhost nc -q 1 localhost 22

Host target
    RemoteForward 3128 localhost:3128
    ProxyCommand ssh -W target:22 sockstunnel

细节

我们想要反向DynamicForward。这可以使用两个ssh命令来实现:

  • ssh -D 3128 localhost
  • ssh -R 3128:localhost:3128 target

这样,目标就具有到SSH客户端的SOCKS隧道。

我所做的是使用经典的ssh链接方式,通过中间主机到达远程目标,以便在登录目标时透明地处理SOCKS隧道的创建。第一个ProxyCommand + nc技巧是强制性的,因为-W表示ClearAllForwardings。


1
这值得一枚金牌。
达卡丁

您能否提供有关命令功能的更详细说明?
阿隆索的

3

没有使用OpenSSH提供反向袜子通道的功能,因此必须运行ssh命令以在“远程”计算机上提供袜子代理。

如果远程计算机无法SSH到本地计算机,请首先创建一个从本地到远程的SSH连接,将端口22转发到例如2222。然后,远程计算机可以在端口2222上通过 SSH进入本地计算机。


2
local$ ssh -R 1080 remote
remote$ curl --socks5 localhost https://example.com

从OpenSSH 7.6开始

ssh(1):添加对反向动态转发的支持。在这种模式下,ssh将充当SOCKS4 / 5代理,并将连接转发到远程SOCKS客户端请求的目标。使用-R和RemoteForward选项的扩展语法请求此模式,并且由于仅在客户端上实现,因此不需要更新服务器即可。

https://www.openssh.com/txt/release-7.6


您可以为此提供参考吗?
斯科特

顺便说一句,openssh-client 8.0中存在一个错误,其中您无法选择带有端口(ssh -R 127.0.0.3:1080 remote)的绑定地址,您当前只能将反向SOCKS代理绑定到端口。
亚当·卡兹
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.