需求1:我们ServerA在内外,ClientB和ServerB不能直接访问它,ClientB可以访问公网的ServerB,我希望ClientB访问ServerB的8080端口相当于访问到ServerA的80端口。
解释ssh参数:
-N:不执行何指令
-f:后台执行
-R:建立reverse tunnel
ServerA上执行:
ssh -C -f -N -g -R 8080:127.0.0.1:80 user@88.2.1.33
# 外网端口:本地地址:本地端口 外网用户名@外网地址
需求2:ServerA希望把所有到自己80端口的数据包转发到ServerB的8080。
ServerA上面执行:
ssh -C -f -N -g -L 80:88.2.1.33:8080 user@88.2.1.33
#本机端口:目标地址:目标端口 目标用户名@目标地址
需求3:我希望使用ServerB作为代理服务器访问其它服务器。
ServerB上面执行:
ssh -N -f -D 8000
然后就可以将127.0.0.1:8000作为sock代理
执行SSH隧道之后,要在外网服务器中配置Nginx反向代理指定端口的数据
server {
listen 80;
server_name www.xxx.com;
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:9090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm;
}
}
学习SSH之隧道应用
https://yq.aliyun.com/articles/43268