Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31726
  • 博文数量: 6
  • 博客积分: 196
  • 博客等级: 入伍新兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-20 15:52
文章分类

全部博文(6)

文章存档

2011年(6)

我的朋友

分类: LINUX

2011-07-27 20:29:16

一 命令说明
二 实例说明
三 在windows机器下使用putty也可以建立端口转发
 
一 命令说明:
 
假设前提,当前用户所在的机器为A,中转机器为B,要连接到的机器为C(c可以为192.168.*这种与B同在一个局域网的机器),A无法直接连接C或者A直接连接C的传输速度过慢,这个时候可以用ssh的端口转发功能.
ssh的三个强大的端口转发命令:
ssh -C -f -N -g -L A的本地闲置端口:C的ip:C的端口 B的系统用户@B的ip
ssh -C -f -N -g -R B的本地闲置端口:C的ip:C的端口 B的系统用户@B的ip
ssh -C -f -N -g -D listen_port B的系统用户@B的ip
-f 在登陆后以后台方式运行,通常和-N连用。
-L A的本地闲置端口:C的ip:C的端口 B的系统用户@B的ip
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机B和 c的端口建立连接.此时用户连接A的本地闲置端口就等同于连接C的端口
-R B的本地闲置端口:C的ip:C的端口 B的系统用户@B的ip
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 C的 端口建立连接.此时用户连接B的本地闲置端口就等同于连接C的端口
-D port
指定一个本地机器 “动态的'’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接.
-C 压缩数据传输。
-N 不执行脚本或命令,通常与-f连用。
-g 在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
 
二 实例说明:

一台服务器提供ftp服务,因为ftp传输是明文密码,如果不做ssh端口之前,我们可以通过tcpdump命令很容易的捕捉到明文信息。所以我们要对21端口进行转发:
(ftp-server)# ssh -CNfg -R 2121:localhost:21
然后登录到10.4.2.50机器,我们可以通过netstat -an|grep :2121查看端口已经侦听
(10.4.2.50)# ftp localhost 21就可以登录到ftp-server了,而且tcpdump无法捕获到有效的信息。
来一个稍微复杂一点的,做网关的例子:
假如内网有一台提供ftp(linux,port is 2121,称为A机器)的机器,通过网关服务器(linux,port is 8888,称为B机器)进去,现在外网有一台C机器需要访问网关服务器的某个端口(port is 21)来访问内网的ftp服务器。大家可以看到,其实这就像是一个基于ssh的防火墙程序,好,下面我们来具体操作:
1。login A 机器
# ssh -CNfg -R 8888:localhost:2121 机器IP
这样我们就在B机器上开了一个8888->2121的端口转换,但是由于8888端口只能侦听在localhost主机上,因此,虽然我们已经可以在B机器上使用
# ftp localhost 8888 来访问真正的ftp服务器,但仍然无法提供给外网的机器访问
2。login B机器
# ssh -CNfg -L 21:localhost:8888
这样做,是做本地机器上的21->8888端口转换,可以侦听在任何地址上的请求。
2(1)。
如果C机器也是一台linux机器,那也可以这样设置:
# ssh -CNfg -R 21:localhost:8888 机器IP
3。使用C机器,可以是linux下的ftp命令,也可以是windows下的客户端软件都可以访问B机器的21端口来连接后台真正的ftp服务器(真正的端口是2121)

三 在windows机器下使用putty也可以建立端口转发:
 
假设从windows机器上将本地的8888端口转发到B的21端口,可以做如下设置
Connection->SSH-Tunnels中可以设置putty的端口转发,Source port为listen_port,填8888,Destionation为DST_Host:DST_port,填写B机器IP:21,设置完了点Add.
注意是local还是remote?
设置好后,我们可以在dos下用netstat命令看一下是否开启了本地的转发端口.
阅读(393) | 评论(0) | 转发(0) |
0

上一篇:wget

下一篇:SUID、SGID

给主人留下些什么吧!~~