ssh隧道

ssh隧道:

#选项含义: -n 重定向stdin到/dev/null
                -g 允许远端主机连接本地转发端口
                -f 后台运行,隐含-n选项(重定向stdin到/dev/null)
                -q 安静模式
                -N 不执行命令
                -T 不创建TTY
                -L 本地转发
                -R 远程转发
                -D 动态转发,实现socks5代理的关键 
# 注意:1-下面的所有命令在SSH客户端上执行 2-如果ssh命令生成的隧道不够稳定,可以考虑AutoSSH
# 本地转发
ssh -gfq -NTL [SSH客户端IP]:SSH客户端主机新产生的监听Port:目标服务端IP:目标服务端Port  SSH服务端User@SSH服务端IP
    #此时在SSH客户端执行:netstat -tunlp 会发现新产生了一个Port监听,客户端可以访问这个Port来实现访问目标服务
    #应用场景:有点像正向代理, 客户端->SSH客户端->【SSH服务端->目标服务端】   (此处SSH服务端和目标服务端可以是同一台主机,如果是同一台主机,则命令格式中的目标服务端IP:目标服务端Port的格式可以写成127.0.0.1:目标服务端口号。这里把“SSH服务端和目标服务端之间的网络”称之为目标网络。这种场景简单说就是客户端经由“SSH客户端->SSH服务端”之间的隧道访问目标网络。或者说客户端访问SSH客户端执行上述命令新产生的PORT监听来访问目标服务端Port代表的服务)
#远程转发
ssh -gfq -NTR [SSH服务端IP]:SSH服务端主机新产生的监听Port:目标服务端IP:目标服务端Port  SSHD服务端User@SSHD服务端IP 
    #此时在SSHD服务端执行: netstat -tunlp 会发现新产生了一个Port监听,客户端可以访问这个Port监听来访问目标服务,默认监听在回环接口,如果需要监听其他接口,需要修改sshd_config的GatewayPorts
    #应用场景:有点像反向代理,  客户端->SSHD服务端->【SSH客户端->目标服务端】  (此处SSH客户端和目标服务端可以是同一台主机,如果是同一台主机,则命令格式中的目标服务端IP:目标服务端Port的格式可以写成127.0.0.1:目标服务端口号,这里把“SSH客户端和目标服务端之间的网络”称之为目标网络。这种场景简单说就是客户端经由“SSH服务端<-SSH客户端”之间的隧道访问目标服务,或说客户端访问SSH服务端新产生的Port监听来访问目标服务端Port代表的服务)
   #实际测试发现,如果想要SSH服务端新生成的端口监听到0.0.0.0的话,需要修改sshd配置文件(/etc/ssh/sshd_config)中的GatewayPorts为yes才行。
#动态转发 
ssh -gfq -NTD [SSH客户端IP]:SSH客户端新产生的监听Port  SSH服务端User@SSH服务端IP 
     #应用场景: socks5正向代理。各种tcp/udp包可以通过"[SSH客户端IP]:SSH客户端新产生的监听Port" 连接到远程SSH服务端,SSH服务端相当于socks5代理服务器。SSH服务端再把客户端发上来的各种各样的“Addr:Port”的请求转发出去

posted on 2019-11-07 13:47  进取有乐  阅读(12)  评论(0编辑  收藏  举报

导航