美文网首页
【端口转发】SSH端口转发

【端口转发】SSH端口转发

作者: Pino_HD | 来源:发表于2017-12-03 14:41 被阅读0次

    0x01 SSH隧道

    什么是SSH隧道呢?举个例子,我们都知道,SSH传输数据是加密传输的,可以有效的保证数据的安全,但是telnet是明文传输的,很不安全,尤其是在公网上,一旦监听到就会有很大的危害,所以一般公司的防火墙都会禁止外网通过telnet连接内网的计算机的。那么如果我们想在外面访问公司的计算机怎么办呢?这个时候就可以用到SSH隧道技术,可以保证数据的传输是加密的。通常我们讲的ssh隧道技术其实就是ssh端口转发。

    0x02 SSH本地端口转发

    原理如下图


    建立本机独享隧道

    将本地9999端口通过192.168.10.1映射到192.168.10.2

    ssh -L 9999:192.168.10.2:23 -Nf 192.168.10.1
    
    -L 本地端口转发
    -N 不执行命令或者脚本,否则会等待用户的输入
    -f 后台执行
    

    建立共享隧道

    他人可以通过访问我的9999端口来访问192.168.10.2

    ssh -g -L 9999:192.168.10.2:23 -Nf 192.168.10.1
    

    0x03 SSH远程端口转发


    那么当防火墙设置为我们从外面不能直接访问内部网络的服务器,但是内部网络的服务器可以访问外面的时候,就要用到远程端口转发技术了。此时就要在内网跳板计算机上运行命令

    ssh -R 9999:192.168.10.2:23 -Nf <外部ip>
    

    这样外部用户只要在自己的机器上使用

    telnet 127.0.0.1:9999
    

    就可以访问到内网192.168.10.2的telnet了。

    0x04 SSH动态端口转发

    举个场景,存在远程外网服务器233.233.233.233上3000端口运行这一个web1服务,4000端口运行这一个web2服务,5000端口运行这一个web3服务(随便举的例子),然后由于防火墙策略只能用22端口连接外部网络,那么如何才能访问到那个外网服务器上的web服务呢?有的同学一定会说可以使用ssh本地端口转发呀,是的,我们可以在本地运行命令

    ssh -L 6666:localhost:3000 root@233.233.233.233 //访问web1服务
    ssh -L 7777:localhost:4000 root@233.233.233.233 //访问web2服务
    ssh -L 8888:localhost:5000 root@233.233.233.233 //访问web3服务
    

    这样做是可以的,但是吧,不觉得很麻烦嘛,如果有10个服务要访问呢,就要输入10条命令,那么这样就可以使用SSH动态端口转发功能了,只需要一条命令即可实现多端口访问。这里需要用到SOCKS代理,使用命令

    ssh -D localhost:2000 root@233.233.233.233
    

    然后在浏览器中找到设置代理的地方,选择SOCKS代理,选择SOCKS5,SOCKS主机填localhost,端口填2000,这样我们只需要在浏览器中输入localhost:3000或者localhost:4000或者localhost:5000就可以方便又快速的访问三个web服务了。这里的原理就是我们访问本地加端口的请求会被ssh转发到真正的那个地址(这里就是外网服务器),又真正的那个地址来处理这个请求,然后将数据发回来。

    0x05 声明

    这篇文章是我通过查询资料然后根据自己的认知来写的,其中如果有什么我说错的地方希望能评论或者私信我,不胜感激!

    相关文章

      网友评论

          本文标题:【端口转发】SSH端口转发

          本文链接:https://www.haomeiwen.com/subject/ibpgyxtx.html