ssh隧道及ssh代理

 

复制代码
ssh隧道
===============================================
https://blog.csdn.net/qq_45300786/article/details/111025981    
0x03动态转发

https://baijiahao.baidu.com/s?id=1716487922632955537&wfr=spider&for=pc


https://www.zsythink.net/archives/2450        朱双印个人日志《ssh端口转发:ssh隧道》

============================================
ssh -qTfnND 5555 root@10.0.0.1

#cat /etc/ssh/sshd_config |grep AllowTcpForwarding
AllowTcpForwarding yes
============================================




-q
-T
-f:将SSH传输转人后台执行,不占用当前的Shell。
-N:建立静默连接(建立了连接,但是看不到具体会话)。
-D:动态转发(socks代理)


创建SSH隧道的常用参数说明如下。

-C:压缩传输,提高传输速度。


-g:允许远程主机连接本地用于转发的端口。
-L:本地端口转发。
-R:远程端口转发

-P:指定SSH端口

配置ssh隧道
ssh隧道
复制代码

 

复制代码
通过ssh隧道,配置跳板机,实现访问内部网络
跳板机开启转发功能

#cat /etc/ssh/sshd_config |grep AllowTcpForwarding
AllowTcpForwarding yes

本地设备建立ssh隧道,监听8889端口

 ssh -qTfnND 8889 -p 51680 root@10.0.0.1

chrome浏览器配置代理服务器,所有请求转发直本地代理 127.0.0.1:8889
通过ssh隧道,配置跳板机,实现访问内部网络
复制代码

 

 

复制代码
SSH 命令的三种代理功能(-L/-R/-D)

https://zhuanlan.zhihu.com/p/57630633


ssh 命令除了登陆外还有三种代理功能:

正向代理(-L):相当于 iptable 的 port forwarding
反向代理(-R):相当于 frp 或者 ngrok
socks5 代理(-D):相当于 ss/ssr



正向代理:

    所谓“正向代理”就是在本地启动端口,把本地端口数据转发到远端。

    用法1:远程端口映射到其他机器

    HostB 上启动一个 PortB 端口,映射到 HostC:PortC 上,在 HostB 上运行:

    HostB$ ssh -L 0.0.0.0:PortB:HostC:PortC user@HostC
    这时访问 HostB:PortB 相当于访问 HostC:PortC(和 iptable 的 port-forwarding 类似)。

    用法2:本地端口通过跳板映射到其他机器

    HostA 上启动一个 PortA 端口,通过 HostB 转发到 HostC:PortC上,在 HostA 上运行:

    HostA$ ssh -L 0.0.0.0:PortA:HostC:PortC  user@HostB
    这时访问 HostA:PortA 相当于访问 HostC:PortC。

    两种用法的区别是,第一种用法本地到跳板机 HostB 的数据是明文的,而第二种用法一般本地就是 HostA,访问本地的 PortA,数据被 ssh 加密传输给 HostB 又转发给 HostC:PortC。

    
反向代理:

    所谓“反向代理”就是让远端启动端口,把远端端口数据转发到本地。

    HostA 将自己可以访问的 HostB:PortB 暴露给外网服务器 HostC:PortC,在 HostA 上运行:

    HostA$ ssh -R HostC:PortC:HostB:PortB  user@HostC
    那么链接 HostC:PortC 就相当于链接 HostB:PortB。使用时需修改 HostC 的 /etc/ssh/sshd_config,添加:

    GatewayPorts yes
    相当于内网穿透,比如 HostA 和 HostB 是同一个内网下的两台可以互相访问的机器,HostC是外网跳板机,HostC不能访问 HostA,但是 HostA 可以访问 HostC。

    那么通过在内网 HostA 上运行 ssh -R 告诉 HostC,创建 PortC 端口监听,把该端口所有数据转发给我(HostA),我会再转发给同一个内网下的 HostB:PortB。

    同内网下的 HostA/HostB 也可以是同一台机器,换句话说就是内网 HostA 把自己可以访问的端口暴露给了外网 HostC。

    按照前文《韦易笑:内网穿透:在公网访问你家的 NAS》中,相当于再 HostA 上启动了 frpc,而再 HostC 上启动了 frps。



本地 socks5 代理

    在 HostA 的本地 1080 端口启动一个 socks5 服务,通过本地 socks5 代理的数据会通过 ssh 链接先发送给 HostB,再从 HostB 转发送给远程主机:

    HostA$ ssh -D localhost:1080  HostB
    那么在 HostA 上面,浏览器配置 socks5 代理为 127.0.0.1:1080,看网页时就能把数据通过 HostB 代理出去,类似 ss/ssr 版本,只不过用 ssh 来实现。


使用优化

    为了更好用一点,ssh 后面还可以加上:-CqTnN 参数,比如:

    $ ssh -CqTnN -L 0.0.0.0:PortA:HostC:PortC  user@HostB
    其中 -C 为压缩数据,-q 安静模式,-T 禁止远程分配终端,-n 关闭标准输入,-N 不执行远程命令。此外视需要还可以增加 -f 参数,把 ssh 放到后台运行。

    这些 ssh 代理没有短线重连功能,链接断了命令就退出了,所以需要些脚本监控重启,或者使用 autossh 之类的工具保持链接。

SSH 命令的三种代理功能(-L/-R/-D)
SSH 命令的三种代理功能(-L/-R/-D)
复制代码

 

ssh -L 22122:localhost:8080 admin@1.1.1.1(client) -p2728 -t ssh -D 8080 -o ServerAliveInterval=10 root@localhost -p 11999
#同时起2条隧道;client---跳板机---server;
client执行 ssh root@127.0.0.1 -p 11999;效果,client登录server

 

复制代码
ssh代理:跳转4次代理,中间2台跳板机
1.准备好1台设备,在机房用于打隧道,执行以下命令
    ssh -R 6666:10.255.16.1:22 root@106.14.211.6  -p 22   #执行这条命令
    ssh -R 6666:10.255.16.1:22【代理端口:ops1 eth1 ip:port】 root@106.14.211.6【公网设备,作为跳板机】  -p 22 
        #在公网跳板机上会启动6666的监听
    ssh -R 代理端口:OPS-1  带外地址:22 root@公网跳板机地址 -p 22

    ssh -R [外网跳板主机:]外网跳板主机端口:内网目标主机:内网目标主机端口 用户@外网跳板主机 [-p 外网跳板主机登录端口]
    ssh -T -N -R 55522:10.41.130.1:22 root@30.42.104.69 -p 2728

2.黑屏登录ops1
    登录公网服务器106.14.211.6后
    ssh localhost -p 6666    #测试ok,跳入ops1


3.白屏访问ASO   
    配置config文件
        user@B-P5TDML7H-0247 ~ % cat .ssh/config 
        Host tbj
        Hostname 106.14.211.6
        User root
        Port 22
        Host ops1
        Hostname 127.0.0.1
        User root
        Port 6666
        ProxyCommand ssh -q -x -W %h:%p tbj
    ssh -qTfnND 8889 ops1
    输入两次密码,第一次跳板机密码,第二次ops1密码

    chrome浏览器配置SwitchyOmega代理“代理服务器”模式

    chrome浏览器访问服务
ssh代理:跳转4次代理,中间2台跳板机
复制代码

 

posted @   雲淡風輕333  阅读(67)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示