SSH 端口映射(一)
转载:http://blog.csdn.net/a351945755/article/details/21785647,http://blog.csdn.net/gaoming655/article/details/7231517,http://blog.aizhet.com/NET/12044.html,
SSH 端口映射
工作中经常会遇到一些服务器访问受限的问题:某些服务器只有私网ip地址,仅能通过内网ip连接,或如mysql服务器或登录其它机器的ssh。
可以将远端服务器一个端口remote_port绑定到本地端口port,
一。 linux
首先要记住一件事情就是:
SSH 端口转发自然需要 SSH 连接,而 SSH 连接是有方向的,从 SSH Client 到 SSH Server 。
而我们所要访问的应用也是有方向的,应用连接的方向也是从应用的 Client 端连接到应用的 Server 端。比如需要我们要访问Internet上的Web站点时,Http应用的方向就是从我们自己这台主机(Client)到远处的Web Server。
如果SSH连接和应用的连接这两个连接的方向一致,那我们就说它是本地转发。
ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

如果SSH连接和应用的连接这两个连接的方向不同,那我们就说它是远程转发。
ssh -R <local port>:<remote host>:<remote port> <SSH hostname>
<PIC>
本地转发:
在本地这台机器上监听一个端口,然后所有访问这个端口的数据都会通过ssh 隧道传输到远端的对应端口上,下面是例子。
本地端口转发绑定的是 lookback 接口,这意味着只有 localhost 或者 127.0.0.1 才能使用本机的端口转发 , 其他机器发起的连接只会得到“ connection refused. ”。要想让其他机器也能共享这个隧道来转发的话需要在配置文件中使用GatewayPorts 关键字,或者直接命令行下使用"-g"参数。
另外本地转发命令中的 <remote host> 和 <SSH hostname> 可以是不同的主机。
<PIC>
远程转发与本地转发正好相反,打开ssh隧道以后,在远端服务器监听一个端口,所有访问远端服务器指定端口都会通过隧道传输到本地的对应端口上,下面是例子。
ssh的三个强大的端口转发命令:
转发到远端:ssh -C -f -N -g -L 本地端口:目标IP:目标端口 用户名@目标IP
转发到本地:ssh -C -f -N -g –R 本地端口:目标IP:目标端口 用户名@目标IP
ssh -C -f -N -g -D listen_port user@Tunnel_Host
其中
-C,是进行数据压缩。
-f,是后台认证用户/密码,通常和-N连用,不用登录到远程主机。只有当提示用户名密码的时候才转向前台。
-N,是不执行远端命令,在只是端口转发时这条命令很有用处。
-g ,在-L/-R/-D参数中,是允许远端主机连接本地转发端口,如果不加这个参数,只允许本地主机建立连接。
-L,则是将本地端口映射到远端主机端口。本地端口:目标IP:目标端口
将本地机(客户机)的某个端口转发到远端指定机器的指定端口。
工作原理: 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发。
只有 root 才能转发特权端口。IPv6 地址用另一种格式说明: port/host/hostport
-R,表明是将远端主机端口映射到本地端口。本地端口:目标IP:目标端口
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
工作原理: 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发.。
只有用 root 登录远程主机才能转发特权端口.。IPv6 地址用另一种格式说明: port/host/hostport
-p :被登录的ssd服务器的sshd服务端口。
-D port
指定一个本地机器 “动态的'’ 应用程序端口转发.。
工作原理: 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接.。目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器。
只有 root 才能转发特权端口,可以在配置文件中指定动态端口的转发。
应用举例
1. 将发往本机的80端口访问转发到192.168.1.1的8080端口
ssh -C -f -N -g -L 80:192.168.1.1:8080 user@192.168.1.1
2. 将发往192.168.1.1的8080访问转发到本机的80端口
ssh -C -f -N -g -R 80:192.168.1.1:8080 user@192.168.1.1
(user为主机192.168.1.1上的用户)
-N - 不使用Shell窗口,纯做转发的时候用,如果你在映射完成后继续在服务器上输入命令,去掉这个参数即可
例子A:我们想远程管理服务器上的MySQL,那么使用下面命令
ssh -L 3306:127.0.0.1:3306 user@emlog-vps -N
运行这个命令之后,ssh将会自动将服务器的3306映射到本机的3306端口,我们就可以使用任意MySQL客户端连接 localhost:3306即可访问到服务器上的MySQL了。
例子B:一次同时映射多个端口
ssh -L 8888:www.host.com:80 -L 110:mail.host.com:110 -L 25:mail.host.com:25 user@host -N
命令将自动把服务器的80,110,25端口分别映射到本机的8888,110和25端口
注:以上命令在ubuntu 9.10 上测试通过...
下一篇
SSH 端口映射(一)的更多相关文章
- Docker运行MongoDB及Redis及ssh端口映射远程连接
Docker运行MongoDB及Redis及ssh端口映射远程连接 本节内容简介 在本实验里我们将通过完成 MongoDB 和 Redis 两个容器来学习Dockerfile及Docker的运行机制. ...
- ssh端口映射总结
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/boliang319/article/det ...
- ssh端口映射 解决服务器使用tensorboard的问题
有时会在服务器上使用tensorboard,然而本地无法直接访问tensorboard结果网页.这时候使用端口映射即可.比如tensorboard上占用的是 6006 端口,也就是说结果在服务器的 l ...
- ssh端口映射,本地转发
应用场景: # HOSTA<-X->HOSTB 表示A,B两机器相互不可以访问, HOSTA<-->HOSTB 表示A,B两机器可以相互访问# 1.localhost< ...
- SSH端口映射
host1:内网主机,承载有网站 host2:外网主机,准备作为代理 方案一: 在host2上执行: # ssh -CnNfgL *::host1_ip: user@host1_ip 方案二:在hos ...
- VMware虚拟机中设置端口映射(转载)
VMware Workstation提供了两种虚拟机上网方式,一种bridge,一种NAT,bridge可以获得公网地址,而NAT只能是内网地址了. NAT相当于把主机当成了一个NAT转换器,我们可以 ...
- SSH25个命令 + 深入SSH端口转发细节
OpenSSH是SSH连接工具的免费版本.telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃 ...
- 记<<ssh穿透防火墙连接内网的机器(不用路由端口映射)>>
场景: 在家连接公司的内网服务器. 需求: 不用设置端口映射在家用putty登录公司内网服务器. 条件: 有一台公网服务器做转发,有开放端口的控制权.(公网服务器可以是阿里云ECS, 腾讯云主机这样的 ...
- SSH有端口映射功能(访问本地端口=访问远程端口)
大部分SSH连接软件都有SSH通道转发功能,就是用这个实现的. 如果Delphi在代码上实现的话,用libSSH 或者 SecureBridge都可以. 代码基本不用帖,思路给大家讲一下吧. SSH有 ...
随机推荐
- JavaScript 面向对象继承详解
题记 由于js不像java那样是完全面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继承,一般都是基于原型链的方式: 一.继承初探 大多数JavaScript的实现用 __proto_ ...
- 新学C#线程使用总结
这两天在项目上需要使用多线程技术,研究了半天,碰到了一些问题,现在简要总结下. 线程的使用其实很简单,和JAVA里面差不多,但是还是有很多特别的地方,在C#中的线程,如果要对非线程创建的控件进行操作的 ...
- [CLR via C#]25. 线程基础
一.Windows为什么要支持线程 Microsoft设计OS内核时,他们决定在一个进程(process)中运行应用程序的每个实例.进程不过是应用程序的一个实例要使用的资源的一个集合.每个进程都赋予了 ...
- 记录一次Mac虚拟机安装的过程(有图有真相)
这是我今天在公司用Vmware workstation虚拟机安装小狮子的全过程,记录一下没什么特别的用途,希望以后不要忘记,整个过程我总共花了半个多小时,挺快的.确实苹果的系统配上苹果的电脑就是牛叉, ...
- spring aop advice
1.前置通知(BeforeAdvice): import java.lang.reflect.Method; import org.springframework.aop.MethodBeforeAd ...
- javascript实现排序算法
准备好好学习js了,js写的第一个排序 先推荐一个js在线编辑工具,RunJS,还不错. 冒泡排序 var arr = [2,4,1,5,3]; function handle(arr){ for(v ...
- Linux chmod命令详解
Linux chmod命令详解 chmod----改变一个或多个文件的存取模式(mode) chmod [options] mode files 只能文件属主或特权用户才能使用该功能来改变文件 ...
- java war run
#!/bin/bashdate=`date +'%Y%m%d %T'`pid=`ps -ef |grep Credit | grep -v grep|awk '{print $2}'`damocles ...
- Maven的安装使用以及 Maven+Spring hello world example
关于Maven Maven是一个用于项目构建的工具,通过它便捷的管理项目的生命周期.即项目的jar包依赖,开发,测试,发布打包. 做过.NET的人应该会联想到Nuget,是的Maven其实就是java ...
- 我所了解的WEB开发(4) - 神奇的URL
如果说WEB开发中什么最为神奇的话,我觉得这当属URL了. URL的启蒙应该是当年的互联网冲浪(surf the Internet),记得当年的电视上宣传互联网冲浪就好似今天对大数据的 ...