V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
a33291
V2EX  ›  问与答

请教,单向 ssh 连接是否可以用作 web 代理?

  •  
  •   a33291 · 302 天前 · 1113 次点击
    这是一个创建于 302 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假如当前存在 A B 2 台 linux 主机,A 可以访问公网+内网,B 只能访问内网.
    A 通过堡垒机形式可以连接到 B 机器的 ssh(有 root 权限),但是 A B 不在同一个网段,B 无法主动连接到 A(ping telnet 均不通).
    在当前只能从 A 连接到 B 的情况下,是否可以在 B 上通过 A 代理上网?( http/s 代理即可,用于安装依赖包)
    7 条回复    2023-07-01 12:55:53 +08:00
    LLaMA2
        1
    LLaMA2  
       302 天前   ❤️ 2
    可以,请点赞收藏

    本机 192.168.124.124
    跳板 192.168.124.222
    目标 172.53.242.10

    step1.
    # manjaro 系统安装软件
    yay -S gost
    # 运行 gost
    gost -L=:1082

    step2.
    a.rdp 登录跳板 192.168.124.222
    b.登录堡垒平台
    c.ssh 连接目标主机
    d.使用 processhacker 查看 tunnel.exe 的端口
    e.使用 portTunnel 转发到 50000

    step3
    在本机 192.168.124.124 使用 ssh 连接目标
    ssh -R 1082:localhost:1082 -oHostKeyAlgorithms=+ssh-rsa -p 50000 [email protected]
    -oHostKeyAlgorithms=+ssh-rsa 是由于目标主机的配置限制,主要是-R 和其参数

    step4
    连接到目标 172.53.242.10 后配置代理
    yum 代理/etc/yum.conf
    proxy=http://127.0.0.1:1082

    环境变量
    export ALL_PROXY=socks5://127.0.0.1:1082

    测试
    curl www.baidu.com

    注意查看本机上的 gost 日志和目标上 curl 返回内容确认
    以上方法也适用于访问受限制的网站,只是不需要跳板而已
    a33291
        2
    a33291  
    OP
       302 天前
    @ye4tar #1 感谢,我忘记说了,堡垒机我没有控制权限.也就是这里的跳板机我无法控制,无法安装任何软件
    LLaMA2
        3
    LLaMA2  
       302 天前   ❤️ 1
    @a33291 请仔细描述下你是如何从 A 连接到 B 的,适当换行,描述下你实际连接的步骤,例如打开堡垒平台网页,获取 XXX 等
    a33291
        4
    a33291  
    OP
       302 天前
    @ye4tar #3 感谢耐心解答

    当前,从 A 连接到 B 的步骤是
    1.确保 A 机器已安装 xshell
    2.在 A 打开浏览器,输入堡垒机网页地址,登录后可以看到可连接的主机资源
    3.选中要连接的主机,点击打开终端
    4.xshell 会自动弹出,并且已经自动成功连接并登录到 B 机器(此过程中无需输入任何用户名密码)
    5.从 A 到 B 的 ssh 通道已建立

    补充
    在 B 上查看 IP 地址是内网地址(192.168.0.5),xshell 上显示的连接地址为一个中间地址(50.1.3.2:30524),这个中转地址有点类似用 frp 穿透 ssh 后的效果,连接此主机的这个端口等于是连接 192.168.0.5 的 ssh.
    在 A 上可以 ping 通 50.1.3.2,也可以 telnet30524 端口,但是 192.168.0.5 不通.
    在 B 上无法 ping 通 A
    LLaMA2
        5
    LLaMA2  
       302 天前   ❤️ 1
    A 机器上执行 gost -L=:1082
    ssh -R 1082:localhost:1082 -p 30524 B 用户名 @50.1.3.2
    a33291
        6
    a33291  
    OP
       302 天前
    @ye4tar #5 感谢,我测试一下👍
    cxtrinityy
        7
    cxtrinityy  
       302 天前 via Android   ❤️ 1
    在 A 上先开个 squid 之类的代理软件,监听端口 11111 ,用于后面代理 B 的请求
    在 A 上执行: ssh -R 22222:localhost:11111 user@host_b_ip
    这里的 22222 是 ssh 将在 B 上监听的端口,该端口的所有请求都会通过 ssh tunnel 转发回 A 上的 11111 端口,也就是 A 上的代理监听的端口
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5453 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:47 · PVG 16:47 · LAX 01:47 · JFK 04:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.