我试图了解ssh -L与-D之间的区别。除了-D仅是SOCKS以外,还有其他内容吗?
谢谢!
我试图了解ssh -L与-D之间的区别。除了-D仅是SOCKS以外,还有其他内容吗?
谢谢!
Answers:
ssh -L
打开一个本地端口。您发送到该端口的所有内容均通过ssh连接放置,并通过服务器保留。如果您这样做了,例如,ssh -L 4444:google.com:80
如果http://localhost:4444
在浏览器中打开,则实际上会看到Google的页面。
ssh -D
打开一个本地端口,但是没有特定的端点,例如with -L
。相反,它伪装成SOCKS代理。如果打开(例如)ssh -D 7777
,当您告诉浏览器localhost:7777
用作SOCKS代理时,浏览器请求的所有内容都会通过ssh隧道。到公共互联网,就好像您是从ssh服务器而不是从计算机浏览一样。
The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
ssh -L 4444:google.com:80
不适用于我,它需要另一个参数来登录,例如user@example.com
在SSH中,-D
指定本地“动态”应用程序级端口转发。
SSH -D [bind_address:]port
指定本地“动态”应用程序级端口转发。这通过分配一个套接字来侦听本地端的端口(可选地绑定到指定的bind_address)而起作用。每当与此端口建立连接时,该连接都会通过安全通道转发,然后使用应用程序协议确定从远程计算机连接到的位置。当前支持SOCKS4和SOCKS5协议,并且ssh将充当SOCKS服务器。只有root可以转发特权端口。动态端口转发也可以在配置文件中指定。
可以使用另一种语法指定IPv6地址:[bind_address /] port或将地址括在方括号中。
只有超级用户可以转发特权端口。默认情况下,本地端口是根据GatewayPorts设置绑定的。但是,可以使用显式bind_address将连接绑定到特定地址。bind_address的“ localhost”表示绑定的侦听端口仅供本地使用,而空地址或“ *”表示该端口应可从所有接口使用。
另外,ssh -L
指定将本地(客户端)主机上的给定端口转发到远程侧上的给定主机和端口。
SSH -L [bind_address:]port:host:hostport
指定将本地(客户端)主机上的给定端口转发到远程侧上的给定主机和端口。这是通过分配一个套接字来侦听本地端的端口(可选地绑定到指定的bind_address)来实现的。每当与此端口建立连接时,该连接都会通过安全通道转发,并且会从远程计算机建立到主机端口hostport的连接。端口转发也可以在配置文件中指定。可以使用另一种语法指定IPv6地址:[bind_address /] port / host / hostport或将地址括在方括号中。
只有超级用户可以转发特权端口。默认情况下,本地端口是根据GatewayPorts设置绑定的。但是,可以使用显式bind_address将连接绑定到特定地址。bind_address的“ localhost”表示绑定的侦听端口仅供本地使用,而空地址或“ *”表示该端口应可从所有接口使用。