SSH反向代理实现外网访问内网服务器
2015-11-18 22:45
573 查看
机器状况
机器号 | IP | 用户名 | 备注 |
---|---|---|---|
A | 192.168.1.130 | usr_a | 目标服务器,在局域网中,可以访问 A |
B | B.B.B.B | usr_b | 代理服务器,在外网中,无法访问 A |
C | - | - | 可以直接访问 B,无法直接访问 A |
目标
从 C 机器使用 SSH 访问 A
解决方案
在 A 机器上做到 B 机器的反向代理;在 B 机器上做正向代理本地端口转发
环境需求
每台机器上都需要 SSH 客户端A、B 两台机器上需要 SSH 服务器端。通常是 openssh-server。在 Ubuntu 上安装过程为
sudo apt-get install openssl-server
实施步骤
建立 A 机器到 B 机器的反向代理【A 机器上操作】ssh -fCNR <port_b1>:localhost:22 usr_b@B.B.B.B
<port_b1>为 B 机器上端口,用来与 A 机器上的22端口绑定。建立 B 机器上的正向代理,用作本地转发。做这一步是因为绑定后的 端口只支持本地访问【B 机器上操作】
ssh -fCNL "*:<port_b2>:localhost:<port_b1>' localhost
<port_b2>为本地转发端口,用以和外网通信,并将数据转发到
<port_b1>,实现可以从其他机器访问。
其中的
*表示接受来自任意机器的访问。现在在 C 机器上可以通过 B 机器 ssh 到 A 机器
ssh -p <portb2> usra@B.B.B.B至此方案完成。
SSH 参数解释
-f 后台运行 -C 允许压缩数据 -N 不执行任何命令 -R 将端口绑定到远程服务器,反向代理 -L 将端口绑定到本地客户端,正向代理
SSH 自动输入密码登录服务器
安装 sshpass
# sudo apt-get install sshpass 安装完成后使用sshpass允许你用 -p 参数指定明文密码,然后直接登录远程服务器。例如: # sshpass -p '你的密码' ssh 用户名@服务器ip地址 用 '-p' 指定了密码后,还需要在后面跟上标准的 ssh 连接命令
相关文章推荐
- Nginx反向代理
- nginx利用lua实现nginx反向代理proxy_store缓存文件自删除
- 正向代理与反向代理
- Squid代理服务
- 正向代理与反向代理
- squid反向代理加速度内网web服务器访问速度
- 使用NGINX反向代理做小偷站
- 使用Apache2服务器设置反向代理
- Nginx反向代理----配置多个server
- 反向代理(一)
- SSH正向与反向代理
- 3.nginx学习笔记:nginx配置反向代理服务器
- squid代理
- nginx:3、nginx反向代理,负载均衡,缓存及yum安装lnmp
- 自己搭建 Google 反向代理网站
- Squid反向代理
- nginx利用lua实现nginx反向代理proxy_store缓存文件自删除
- 部署Squid透明代理
- Squid介绍及普通代理完整部署
- nginx反向代理后端IIS持续报错504