当想要能过本地直接访问要经过跳板机的服务时,可以使用ssh命令直接建立隧道(ssh tunnel)。这种类型的隧道被称为正向隧道。
正向隧道 服务器结构如下:本地机器 --> 公网ip跳板机 --> 服务器
目标:从本地机器直接访问服务器的某个端口
使用条件:在本地机器上 ssh user@host 可以登陆跳板机。
相关命令行:ssh -N -L -f [bind_address]:port:host:hostport user@host2
-L [bind_address:]port:host:hostport 创建正向连接的标识。 指定到本地(客户端)主机上给定的TCP端口或Unix套接字的连接将被转发到远程端上给定的主机和端口。
-N:表示不执行远程命令,加上它ssh不会真的登陆到跳板机上。
-f: 后台运行
-C: 请求压缩所有的数据
-g: 允许远程主机连接到本地转发的端口。如果在多路连接上使用,则必须在主进程上指定此选项。
-o TCPKeepAlive=yes
其中bind_address对应的是本地的机器ip。
port为本地可用的端口。
host为服务器的ip
hostport为服务器的port
user@hosts 为可登陆的跳板机的用户名和密码。
eg:
ssh root@xxx -C -f -N -g -L local_port:hosts:port -o TCPKeepAlive=yes
使用创建好隧道后,就可以通过本地来访问了。如 telnet localhost port
或者 http://127.0.0.1:local_port
其他这里有一点,如果自己可以通过ssh登陆到本机,那么可以在本机上做ssh隧道到本机可达的另一台机器。



