• SSH命令之正反向代理和端口转发


    前言

    近期碰到了一个需要连接主机A的数据库的需求,但是主机A是在内网中,无法直接连接到,也就无法访问到数据库。但是这里也有另一台主机B,和主机A同处一个内网中,但是连接主机B需要通过跳板机C。我的服务器是yyy。通过这次经历我发现我对ssh连接的命令以及正反向代理的理解不是很充分,最终在rhh的帮助下才解决了问题。

    主机 主机IP
    A 47.168.127.1
    B 47.168.127.2
    yyy 47.168.20.2
    C 47.168.127.43

    思路

    由于我无法直接连接主机A,但主机A和主机B在同一内网下,所以我可以通过主机B作为代理转发主机A的3306端口到我的服务器yyy的3308端口即可。这样我就可以直接在yyy上连接数据库。所以此时只需要连接主机B即可,而连接主机B可以通过跳板机C代理连接。、

    解决

    ssh -o Proxycommand='ssh root@47.628.127.43 -P 123 -W %h:%p' root@47.168.127.2
    ssh -R 3308:47.168.127.1:3306 root@47.168.20.2
    这样只需要在yyy的3308端口就可以连接到主机A的数据库了
    mysql -h 127.0.0.1 -P 3308 -u root -p

    SSH命令

    正向代理 ssh -fCNL
    反向代理 ssh -fCNR
    -f 后台执行ssh指令
    -C 允许压缩数据
    -N 连接后不取得shell
    -C 启动压缩,加快速度
    

    正向代理(L)

    将中间主机可访问的主机指定端口镜像到本地指定端口

    ssh -L 本地IP:本地端口:中间主机可访问的IP:中间主机可访问的IP的端口 root@中间主机

    反向代理(R)

    将本地可访问的主机的指定端口镜像到远程指定端口

    ssh -R 远程IP:远程端口:本地可访问IP:本地可访问IP的端口 root@远程主机

    端口动态转发

    当访问internet时,本机的1080端口作为代理服务器(socks5代理),访问请求被转发到ssherver上,由sshserver代替之访问internet

    ssh -fCND 1083 root@x.x.x.x
    ssh -fN -D 0.0.0.0:1083 root@x.x.x.x
    执行之后 使用本地1083的socks5代理,流量显示为服务器x.x.x.x的ip

    参考链接

    rgg

  • 相关阅读:
    php -- 读取大文件
    php header函数下载文件实现代码
    HTTP HEADER 详解
    linux -- 进程管理和作业控制
    linux -- at命令
    Binary String Matching
    括号匹配
    ASCII码排序
    快捷键
    ubuntu14的unity desktop显示异常
  • 原文地址:https://www.cnblogs.com/matoka/p/13626253.html
Copyright © 2020-2023  润新知