7

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

 1 year ago
source link: https://www.v2ex.com/t/953195
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  问与答

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

  a33291 · 13 小时 26 分钟前 · 553 次点击
假如当前存在 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
ye4tar

ye4tar      13 小时 10 分钟前   ❤️ 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

a33291      12 小时 53 分钟前

@ye4tar #1 感谢,我忘记说了,堡垒机我没有控制权限.也就是这里的跳板机我无法控制,无法安装任何软件
ye4tar

ye4tar      12 小时 26 分钟前   ❤️ 1

@a33291 请仔细描述下你是如何从 A 连接到 B 的,适当换行,描述下你实际连接的步骤,例如打开堡垒平台网页,获取 XXX 等
a33291

a33291      12 小时 3 分钟前

@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
ye4tar

ye4tar      11 小时 56 分钟前   ❤️ 1

A 机器上执行 gost -L=:1082
ssh -R 1082:localhost:1082 -p 30524 B 用户名 @50.1.3.2
a33291

a33291      11 小时 43 分钟前

@ye4tar #5 感谢,我测试一下👍
cxtrinityy

cxtrinityy      10 小时 48 分钟前 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 上的代理监听的端口

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK