Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐: 强烈推荐:Ylmf OS 3.0 正式版发布附迅雷高 XP系统下硬盘安装Fedora 14图文教程
搜索:
您的位置: Linux安全网 > Linux入门 > » 正文

ssh端口转发

来源: lzspf 分享至:

ssh的三个强大的端口转发命令
 ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
 ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host
 ssh -C -f -N -g -D listen_port user@Tunnel_Host
 -f Fork into background after authentication.
 后台认证用户/密码,通常和-N连用,不用登录到远程主机。
 -p port Connect to this port. Server must be on the same port.
 被登录的ssd服务器的sshd服务端口。
 -L port:host:hostport
 将
 本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口,
 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接.
 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport
 -R port:host:hostport
 将
 远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口,
 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接.
 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明:
 port/host/hostport
 -D port
 指定一个本地机器 “动态的'’ 应用程序端口转发.
 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去,
 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root
 才能转发特权端口. 可以在配置文件中指定动态端口的转发.
 -C Enable compression.
 压缩数据传输。
 -N Do not execute a shell or command.
 不执行脚本或命令,通常与-f连用。
 -g Allow remote hosts to connect to forwarded ports.
 在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。注:这个参数我在实践中似乎始终不起作用,参见III)
 实例说明:
 一台服务器提供ftp服务,因为ftp传输是明文密码,如果不做ssh端口之前,我们可以通过cpdump.html' target='_blank'>tcpdump命令很容易的捕捉到明文信息。所以我们要对21端口进行转发:
 (ftp-server)# ssh -CNfg -R 2121:localhost:21 root@10.4.2.50
 然后登录到10.4.2.50机器,我们可以通过stat.html' target='_blank'>netstat -an|grep :2121查看端口已经侦听
 (10.4.2.50)# ftp localhost 21就可以登录到ftp-server了,而且tcpdump无法捕获到有效的信息。
 2121端口任意选择,只要是机器上没有占用的端口就行
 
来一个稍微复杂一点的,做网关的例子:
 假
 如内网有一台提供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 root@B机器IP
 这样我们就在B机器上开了一个8888->2121的端口转换,但是由于8888端口只能侦听在localhost主机上,因此,虽然我们已经可以在B机器上使用
 # ftp localhost 8888 来访问真正的ftp服务器,但仍然无法提供给外网的机器访问
 2。login B机器
 # ssh -CNfg -L 21:localhost:8888 root@localhost
 这样做,是做本地机器上的21->8888端口转换,可以侦听在任何地址上的请求。
 2(1)。
 如果C机器也是一台linux机器,那也可以这样设置:
 # ssh -CNfg -R 21:localhost:8888 root@C机器IP
 3。使用C机器,可以是linux下的ftp命令,也可以是windows下的客户端软件都可以访问B机器的21端口来连接后台真正的ftp服务器(真正的端口是2121)

 

实际操作:

1.内网机器操作
ssh -CNfg -R 8880:localhost:8080 root@60.247.10.X

2.公网机器操作
ssh -CNfg -L 8881:localhost:8880 root@localhost

 

这样公网中的机器只需要访问http://60.247.10.X:8881

就访问到了我内网的那台部署tomcat的机器。

 

 

 


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史