SSH端口转发

目录:
1. 正向转发
2. 动态转发(SOCKS代理)
3. 反向转发

相关信息:

  • 两个网段(不能互通):172.16.1.0/24,192.168.68.0/24;
  • 172.16.1.0/24网段有一台ip为172.16.1.1的Linux服务器,安装了WEB服务,并将SSH的22端口在网关上做了端口映射,可以让192.168.68.0/24网段访问;
  • 192.168.68.0/24网段有一台ip为192.168.68.203的Linux服务器,需要访问172.16.1.1的WEB服务;
  • Linux服务器都已经关闭防火墙;

1. 正向转发
1.1. 安装相关软件包

[root@srv68_203 ~]# yum install -y openssh-clients
[root@srv68_203 ~]# rpm -qa openssh-clients
openssh-clients-5.3p1-94.el6.x86_64

1.2. 创建正向转发
将172.16.1.1服务器上的80端口映射到本地127.0.0.1的8080端口(访问127.0.0.1的8080等于访问172.16.1.1的80)

[root@srv68_203 ~]# ssh -N -L 127.0.0.1:8080:localhost:80 root@172.16.1.1
root@172.16.1.1's password:(输入密码后会卡住不动,因为命令加了-N参数)

1.3. 新开一个192.168.68.203的终端窗口,并使用curl命令测试访问127.0.0.1的8080

[root@srv68_203 ~]# netstat -antplu|grep 8080
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 2306/ssh
 
[root@srv68_203 ~]# curl http://127.0.0.1:8080
hello world
web server:172.16.1.1

测试访问成功!

如果想转发172.16.1.0/24网段里的其他服务器指定端口,就把localhost:80改为如:172.16.1.2:21

[root@srv68_203 ~]# ssh -N -L 127.0.0.1:8080:172.16.1.2:21 root@172.16.1.1

如果想让其他人也能够访问转发后的端口,就把127.0.0.1改为如:0.0.0.0:8080

[root@srv68_203 ~]# ssh -N -L 0.0.0.0:8080:172.16.1.2:21 root@172.16.1.1

2. 动态转发(SOCKS代理)
2.1. 创建动态转发(-g参数表示允许其他主机也能使用动态转发,默认只允许本机)

[root@srv68_203 ~]# ssh -g -N -D 8080 root@172.16.1.1
root@172.16.1.1's password:(输入密码后会卡住不动,因为命令加了-N参数)

2.2. 新开一个192.168.68.203的终端窗口,并使用curl命令测试访问172.16.1.1:80和172.16.1.2:80

[root@srv68_203 ~]# netstat -antplu|grep 8080
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 2537/ssh

2.3. 测试访问动态转发
在192.168.68.0/24网段里找一台Windows服务器,并在浏览器里设置代理服务器:
Internet 选项—局域网(LAN)设置—代理设置—套接字



如果想设置全局socks代理访问tcp/udp类的资源,可以用以下软件:
Windows:Proxifier,ProxyCap
Linux:proxychains,redsocks,tsocks

资料:http://blog.creke.net/770.html
3. 反向转发
某一天管理员把172.16.1.0/24网段的网关端口映射功能关闭了,导致172.16.1.1的SSH转发不能用了。
但是又想让192.168.68.0/24网段继续访问172.16.1.1的WEB服务,怎么操作呢?
首先需要将192.168.68.203的22端口添加映射,使172.16.1.1能通过SSH做反向转发:

在172.16.1.0/24网段里登录172.16.1.1
3.1. 创建反向转发
将172.16.1.1服务器上的80端口映射到192.168.68.203的127.0.0.1:8080端口(访问192.168.68.203的8080等于访问172.16.1.1的80)

[root@srv1_1 ~]# ssh -N -R 127.0.0.1:8080:localhost:80 root@192.168.68.203
root@192.168.68.203's password:(输入密码后会卡住不动,因为命令加了-N参数)

3.2. 在192.168.68.0/24网段里登录192.168.68.203,并使用curl命令测试访问127.0.0.1的8080

[root@srv68_203 ~]# netstat -antplu|grep 8080
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 2372/ssh
 
[root@srv68_203 ~]# curl http://127.0.0.1:8080
hello world
web server:172.16.1.1

测试访问成功!

如果想转发172.16.1.0/24网段里的其他服务器指定端口,就把localhost:80改为如:172.16.1.2:21

[root@srv1_1 ~]# ssh -N -R 127.0.0.1:8080:172.16.1.2:21 root@192.168.68.203

如果想让其他人也能够访问转发后的端口,就把127.0.0.1改为如:0.0.0.0:8080

[root@srv1_1 ~]# ssh -N -R 0.0.0.0:8080:172.16.1.2:21 root@192.168.68.203

这里需要注意,还需要开启192.168.68.203 SSH服务器里的GatewayPorts功能,否则其他人是没法直接访问的(即使绑定的是0.0.0.0:8080)

[root@srv68_203 ~]# sed -i.bak 's/^#GatewayPorts.*$/GatewayPorts yes/g' /etc/ssh/sshd_config
[root@srv68_203 ~]# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
重新在172.16.1.1上运行反向连接命令

[root@srv1_1 ~]# ssh -N -R 127.0.0.1:8080:localhost:80 root@192.168.68.203

资料: http://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值