• ssh的tunnel隧道打洞


    分正向和反向。

    假设,本地机器可以ssh连上远程机器。本地机器在下面叫做SSHClient, 远程机器叫做SSHServer.

    一、 正向代理(本地转发)

    在SSHClient机上执行:

    ssh -o TCPKeepAlive=yes -o ServerAliveInterval=20 -NfL 1234:localhost:12300 SSHServer -p22
    注意:
    1. 蓝色部分就是一个ssh语句。绿色是本地红色是远程
    2. 这里面的"localhost"指的是SSHServer机上的localhost。而绿色1234才是本地。
    3. 这条命令的作用是:在本机(SSHClient机)上打开一个端口1234,这个1234能把接收的数据转发到SSHServer机上的12300端口.
    4. 注意SSHClient机上的1234在SSHClient的localhost上。如果希望SSHClient的同内网其他机器(能够直接访问SSHClient的机器)也能访问这个1234,怎开办呢?加-g参数:
    ssh -g -NfL 1234:localhost:12300 SSHServer -p22
    (加-g参数前后,可以看看 lsof -i :1234 的区别: LISTEN从localhost变为*了~)
    也可以这样:
    ssh -NfL 0.0.0.0:1234:localhost:12300 SSHServer -p22
    5. 如果想转发的是SSHServer机器上可以访问的其他服务,比如www.baidu.com:80,那就把上面命令里的红色换成www.baidu.com:80即可。然后浏览器打开localhost:1234,却发现然并卵——"Empty reply from server"。。。其实已经转发成功了,但是对于http应该这样: curl -H "Host: www.baidu.com" -X GET http://localhost:1234

    二、反向代理(远程转发)

    在SSHClient机上执行:

    ssh -o TCPKeepAlive=yes -o ServerAliveInterval=20 -Nf 2222:localhost:22  SSHServer -p22
    注意:
    1. 蓝色部分就是一个ssh语句。绿色是本地红色是远程
    2. 这里面的"localhost"指的就是本机(SSHClient机)上的localhost。而红色是远程机上开了个‘洞’。这时上SSHServer上 lsof -i :2222 就会发现已经打开了端口监听。
    3. 这条命令的作用是:在远程机器SSHServer上开了一个端口2222, 这个2222会把接收到的数据转发到SSHClient上的22端口。
    (22是ssh,那么登上SSHServer用ssh连SSHClient试试: ssh user@SSHClient -p2222  这里假设SSHClient机上面也安装了ssh服务)

  • 相关阅读:
    three.js中 用 鼠标点击+呼吸灯
    socket.io学习以及在vuehtml使用,node搭建的后台
    网路在线古诗文免费阅读网站
    vue-element-admin默认加载Dashboard更改
    vue-element-admin后台框架侧边蓝图标添加自定义
    吸顶操作vue
    对图片进行裁剪(vueCropper)图片不显示
    ucharts使用内容
    文字转换为语音在线免费工具连接
    tree.js外部骨骼动画
  • 原文地址:https://www.cnblogs.com/xiaouisme/p/8944271.html
Copyright © 2020-2023  润新知