ssh的tunnel的实例分析
[
|
2009/11/17 00:14]
|
2009/11/17 00:14]
参考链接:
http://secer.org/tech/depth-of-ssh-tunnel.html
ssh的隧道实例分析,总是看了一堆命令了,但是实际应用时总是搞错命令,下面就结合实际案例来写一下命令。
案例A:
主机ha01和ha02
1:在h02主机上操作,实现将ha01:80端口应用ssh隧道到本地ha02:12345
ssh -NCfg -L 12345:ha01:80 root@ha01
2:在ha02主机上操作,实现将ha02:80端口应用ssh隧道到远端ha01:12345
ssh -NCfg -R 12345:ha02:80 root@ha01
注意:
-g参数,只有在本地,也就是-L的时候,才开启监听所有端口;-R的时候,远端只监听127.0.0.1的端口。
案例B:
公司内网的主机代号INC-myhost,实现从外网穿透公司防火墙,直接访问到公司内网里面的主机。
实现方法:内网主机端口22与跳板主机端口12345建立隧道,通过ssh访问到跳板主机,在跳板主机访问127.0.0.1:12345到内网主机。
在内网主机上执行:
ssh -NCfg -R 12345:localhost:22 root@relaysrever.com
一些问题:实际操作中曾经报错,ssh_exchange_identification connection closed by remote host lost connection,尚未解决。当测试时内网主机为ubuntu9.04,外网主机为sles102时报错。当两台主机都是sles102时就没有问题。我尝试了/etc/hosts.allow、/etc/ssh/sshd_config的GatewayPorts yes等等,但是发现不是根本原因所在。但是肯定应该是ubuntu上的什么配置导致这个问题的呢?ubuntu上会报错connect_to relayserver port 22: failed.
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参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
如果想要了解更多关于SSH的细节,可以 man ssh ,或参照ssh的DOC.
本文链接:http://www.52zhe.cn/read.php/242.htm
本文作者:kook(若就博客内所涉及的技术问题交流,请用下面的MSN或Gmail联系我)
联系方式:(MSN:kook#live.com) (Google talk:kookliu)
没有版权:GNU,转载时请注明“转载人”欠本人一顿饭,来日见面之时兑现!谢谢合作!
http://secer.org/tech/depth-of-ssh-tunnel.html
ssh的隧道实例分析,总是看了一堆命令了,但是实际应用时总是搞错命令,下面就结合实际案例来写一下命令。
案例A:
主机ha01和ha02
1:在h02主机上操作,实现将ha01:80端口应用ssh隧道到本地ha02:12345
ssh -NCfg -L 12345:ha01:80 root@ha01
2:在ha02主机上操作,实现将ha02:80端口应用ssh隧道到远端ha01:12345
ssh -NCfg -R 12345:ha02:80 root@ha01
注意:
-g参数,只有在本地,也就是-L的时候,才开启监听所有端口;-R的时候,远端只监听127.0.0.1的端口。
案例B:
公司内网的主机代号INC-myhost,实现从外网穿透公司防火墙,直接访问到公司内网里面的主机。
实现方法:内网主机端口22与跳板主机端口12345建立隧道,通过ssh访问到跳板主机,在跳板主机访问127.0.0.1:12345到内网主机。
在内网主机上执行:
ssh -NCfg -R 12345:localhost:22 root@relaysrever.com
一些问题:实际操作中曾经报错,ssh_exchange_identification connection closed by remote host lost connection,尚未解决。当测试时内网主机为ubuntu9.04,外网主机为sles102时报错。当两台主机都是sles102时就没有问题。我尝试了/etc/hosts.allow、/etc/ssh/sshd_config的GatewayPorts yes等等,但是发现不是根本原因所在。但是肯定应该是ubuntu上的什么配置导致这个问题的呢?ubuntu上会报错connect_to relayserver port 22: failed.
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参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。
如果想要了解更多关于SSH的细节,可以 man ssh ,或参照ssh的DOC.
本文链接:http://www.52zhe.cn/read.php/242.htm
本文作者:kook(若就博客内所涉及的技术问题交流,请用下面的MSN或Gmail联系我)
联系方式:(MSN:kook#live.com) (Google talk:kookliu)
没有版权:GNU,转载时请注明“转载人”欠本人一顿饭,来日见面之时兑现!谢谢合作!
内网下的主机如何获取最上层网关的公网地址?
crontab无法使用bash的build-in函数




ssh tunnel
这个错误是连接上马上报错么?还是过阵子才报的?