关于ssh端口转发的深入实例

原创 2007年09月29日 11:27:00

ssh的三个强大的端口转发命令:
QUOTE:

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端口之前,我们可以通过tcpdump命令很容易的捕捉到明文信息。所以我们要对21端口进行转发:
(ftp-server)# ssh -CNfg -R 2121:localhost:21 root@10.4.2.50
然后登录到10.4.2.50机器,我们可以通过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)
如果是按照2(1)中的设置,则访问的地址为本机IP。


简单介绍一个在linux下使用的设置ssh端口转换的程序
http://gstm.sourceforge.net/?page_id=5
[p_w_upload=1197]

在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?
[p_w_upload=1198]
设置好后,我们可以在dos下用netstat命令看一下是否开启了本地的转发端口
[p_w_upload=1199]
接下来我们访问localhost的8888端口来访问ftp服务器了
关于ssh端口转发的深入实例

关于ssh端口转发的深入实例

关于ssh端口转发的深入实例

关于ssh端口转发的深入实例

关于ssh端口转发的深入实例

关于ssh端口转发的深入实例

 

SSH25个命令 + 深入SSH端口转发细节

OpenSSH是SSH连接工具的免费版本。telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃...
  • moubenmao
  • moubenmao
  • 2013年08月27日 14:59
  • 6695

详解SSH三种端口转发

SSH端口转发的好处:     1. 利用SSH通道天然的加密特性     2. 通过具备访问权限的第三者,突破防火墙对自己的限制 角色定义:     A. 本地服务器,想通过中间服务器B间接访问...
  • evandeng2009
  • evandeng2009
  • 2016年07月16日 23:56
  • 7386

实战 SSH 端口转发

实战 SSH 端口转发 通过本文的介绍,读者可以从中了解到如何应用 SSH 端口转发机制来解决日常工作 / 生活中的一些问题。学会在非安全环境下使用端口转发来加密网络应用,保护个人隐...
  • a351945755
  • a351945755
  • 2014年03月22日 11:59
  • 2717

[精]详解SSH端口转发,本地端口转发、远程端口转发、动态端口转发

通过本文的介绍,读者可以从中了解到如何应用 SSH 端口转发机制来解决日常工作 / 生活中的一些问题。学会在非安全环境下使用端口转发来加密网络应用,保护个人隐私以及重要商业信息。同时也能够用此技术解决...
  • sunansheng
  • sunansheng
  • 2016年03月19日 00:23
  • 4994

一条ssh命令实现端口转发,实现跨机器直接访问

一条ssh命令实现端口转发,实现跨机器直接访问 #(实验环境没有跨网段,实际情况,第三方机器访问不是192.168.100.11那个IP,而是其他网口IP,侦听端口对即可) #本机192.168.10...
  • oufuji
  • oufuji
  • 2015年12月19日 16:17
  • 3809

使用 ssh -R 建立反向/远程TCP端口转发代理

http://blog.163.com/digoal@126/blog/static/163877040201451464251856/ 是一个非常棒的工具, 不但能建立动态转发, 例如...
  • oMingZi12345678
  • oMingZi12345678
  • 2015年06月28日 18:22
  • 2284

vmware net转发映射ssh端口

为了让远程电脑能直接通过ssh对vmware里的虚拟机,通过net映射实现:端口net网卡的虚拟机rhel6.4的ip:192.168.20.128650) this.width=650;" src=...
  • hjxzt1
  • hjxzt1
  • 2017年06月26日 16:39
  • 211

SSH的端口转发:本地转发Local Forward和远程转发Remote Forward

http://zhumeng8337797.blog.163.com/blog/static/100768914201172125444948/ 实战 SSH 端口转发 htt...
  • a351945755
  • a351945755
  • 2014年03月22日 11:23
  • 46554

windows下putty的端口转发

在windows机器下使用putty也可以建立端口转发 假设从windows机器上将本地的8888端口转发到B的21端口,可以做如下设置 Connection->SSH-Tunnels中可以设置p...
  • stonesharp
  • stonesharp
  • 2013年06月03日 23:10
  • 1463

建立SSH隧道(SSH端口转发)

ssh隧道功能,也就是端口转发功能非常好用,可以实现一些代理功能或者是穿透内网功能。 ssh的端口转发(或者叫做隧道)命令分为三种: 本地:ssh -C -f -N -g -L listen_por...
  • yx511500623
  • yx511500623
  • 2016年01月29日 16:31
  • 1713
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于ssh端口转发的深入实例
举报原因:
原因补充:

(最多只允许输入30个字)