使用SSH进行端口转发

多数情况下,ssh作为一个安全终端来进行使用。但SSH也提供了隧道功能,配合sshd守护进程,可以实现TCP端口转发等强大功能,可以实现保护通信数据,实现反向突破防火墙限制等功能。

1 ssh的一般使用
ssh -p 22 -l root 192.168.1.1  
连接远程ssh服务器,-p指定端口,-l指定登录用户名
其他选项说明
-f 指定ssh在后台运行
-i 指定证书文件
-o 指定选项明细,可用ssh_config来定义

2 本地转发
ssh -L [bind-addr:]port:host:hport sshd-host
其作用是创建一个绑定在bind-addr:port上的socket,同时创建一个到sshd-host上的数据连接,当有数据到达socket上时,将数据加密并通过数据连接发送到sshd-host并进行解密,然后转发到host:hport。返回的数据则按原路送回。
示例: $ ssh -L 7001:localhost:389 LdapServerHost


3 远程转发
ssh -R [bind-addr:]port:host:hport sshd-host
其作用是通知远程的sshd-host,创建一个绑定在bind-addr:port上的socket。同时本机的ssh-client创建一个到sshd-host的数据连接。这样当绑定的socket上有数据到达时,sshd-host将数据进行加密,并通过数据连接传送数据,数据在通过数据连接到达本地后进行解密,然后转发给指定的host:hport。
示例:$ ssh -R 7001:localhost:389 LdapClientHost

上面这两种转发环境下,只能支持单个主机访问绑定的端口,为了使得更多的主机可以使用转发功能,可以增加-g参数,以共享出绑定端口,供多台设备访问使用。

4 动态转发
ssh -D [bind-addr:]port sshd-host
其作用是,创建一个绑定在bind-addr:port上的socks代理,代理收到的数据将被加密并发送到sshd-host上解密,由sshd-host转发到数据所请求的地址上。
示例:$ ssh -D 7001 <SSH Server>


5 多主机应用场景

示例:在C设备上执行 $ ssh -g -L {C}:7001:{B}:389 {D}  将{x}替换为对应主机的主机名或IP即可。当然需要配置A主机上的应用通过SOCKS代理将数据发送到C主机的7001端口上。

参考文献及图片来源:
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、付费专栏及课程。

余额充值