• SSH 内网端口转发实战


    导读 大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多。不过其实除了这个功能,它的隧道转发功能更是吸引人。

    如果两个内网之间的linux服务器需要互相登录,或需要互相访问内网某个端口,担忧没有公网IP,可以使用的方法有ngrok(https://ngrok.com/),但并不方便,我们只需两条 SSH 命令即可。
    SSH_Communications_Security_logo.svg

    先给出本文主角,两条SSH命令:
    远程端口转发(由远程服务器某个端口转发到本地内网服务器端口)
    
    ssh   -CfNg  -R(命令行的关键)   2222(远程服务器端口):127.0.0.1:22(本地端口)   123.45.67.8(远程服务器) 
    
    本地端口转发(由本地内网服务器某个端口转发到远程服务器端口)
    
    ssh   -CfNg  -L(命令行的关键)    2222(远程服务器端口):0.0.0.0:4444(本地端口)   123.45.67.8(远程服务器) 
    
    命令行选项解释:
    -C:压缩数据传输。
    -f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。
    -N :不执行脚本或命令,通常与-f连用。
    -g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
    -L 本地端口:目标IP:目标端口
    -T 不分配 TTY 只做代理用
    -q 安静模式,不输出 错误/警告 信息
    

    需要让远程机器能访问的内部机器的端口号(端口:22)

    在清楚了上面的参数后,我们使用下面的命令来建立一个远程SSH隧道,在内网主机执行

    ssh   -CfNg -R 2222:127.0.0.1:22  123.45.67.8
    

    现在,在IP是123.45.67.8的机器上我们用下面的命令就可以登陆内网IP为192.168.0.100的机器了。

    ssh -p 2222 localhost
    

    现在公网ip的 123.45.67.8 主机可以本地访问内网服务端了,那内网客户端要怎么登陆呢?,我们只需要把内网客户端的 4444 端口映射到 123.45.67.8 的 2222端口即可。

    现在我们需要本地转发了。

    ssh  -CfNg   -L  2222:0.0.0.0:4444   123.45.67.8
    

    执行完后,本地的内网客户端 4444 端口已经和 123.45.67.8 的 2222 端口连接起来,然后 123.45.67.8 的 2222 端口 又和 内网服务端的 22 端口连接起来,成为一个完整的映射链。

    免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:https://www.linuxprobe.com/

  • 相关阅读:
    [Solution] DI原理解析及Castle、Unity框架使用
    [Solution] AOP原理解析及Castle、Autofac、Unity框架使用
    [C#] CSharp 基本语法
    [Architect] Abp 框架原理解析(5) UnitOfWork
    [Code] C#与js的正则表达式
    [SQL] SQL SERVER基础语法
    [Tool] PowerDesigner
    [JS] javascript基础语法
    SharedPreferences 的另一种场景的用法
    Eclipse 工程迁移到 Android Studio
  • 原文地址:https://www.cnblogs.com/linuxprobe/p/5580594.html
Copyright © 2020-2023  润新知