SSH 本地端口转发和远程端口转发

学习笔记 马富天 2019-07-31 14:29:09 24 0

【摘要】SSH 可以将本地的某个端口映射到远程服务器的某个端口上,也可以将远程服务器的某个端口映射到本地的某个端口上。

本地端口转发,如下图所示:

请输入图片名称

场景:外部主机 A 可以直接访问内部主机 B,但不能直接访问内部主机 C;主机 B 可以访问主机 C。目的实现外部主机 A、D 访问内部主机 C。

本地端口转发是在 ssh-client 端建立侦听端口 3307 ,访问 ssh-client 侦听端口 3307 的将 tcp 数据包通过 ssh 隧道发往 ssh-server 端,ssh-server 端收到 tcp 数据包后,再与指定的目标 ip 端口(主机 C:192.68.1.10:3306)建立新的 tcp 连接并转发数据。换句话说,就是在 192.168.10.33 这台机子上侦听 3307 端口,设置 ssh-server 端将 tcp 数据包发送到 192.68.1.10:3306 端口。

命令示例(主机 A 上执行):

  1. ssh -g -L 3307:192.68.1.10:3306 root@192.168.1.18

本地端口转发命令格式如下:

  1. ssh -L [-g] <local-port-to-listen>:<remote-host>:<remote-host-port> <sshserver>

<local-port-to-listen> 本地端口,即 ssh-client 机子的端口

<remote-host>:<remote-host-port> 目标机器和端口,即真正提供服务的端口

<sshserver> ssh 服务器,即提供端口转发功能的服务器

远程端口转发,如下图所示:

请输入图片名称

场景:外部主机 A 不能直接访问内部主机 B、C;而内部主机 B 可以访问外部主机 A 与内部主机 C 。目的实现外部主机 A、D 访问内部主机 C。

远程端口转发是在 ssh-server 端建立侦听端口 8080(主机 A), 若有访问,则加密后通过 ssh 隧道转发 "请求" 到 ssh-client 端,ssh-client 端收到数据包后转发 "请求" 到 192.168.1.10:80 端口。

命令示例(主机 B 上执行):ssh -R 8080:192.68.1.10:80 root@192.168.1.33

执行上面的命令以后,主机 B 到主机 A 的 SSH 隧道已经建立了,就可以从主机 A 就能访问主机 C 了,即在主机 A 上执行:curl http://127.0.0.1:8080 就是访问主机 C 的 80 端口(192.168.1.10:80)。

远程端口转发命令格式:

  1. ssh -R <ssh-server-port-to-listen>:<remote-host>:<remote-host-port> <sshserver>

即把所有对 <sshserver>:<ssh-server-port-to-listen> 的请求都转发到 <remote-host>:<remote-host-port>上去。

注意:

(1)如果不是以 root 身份设置端口转发的话,转发端口号只能使用大于 1024 的端口号(1024 内的端口属于静态端口);

(2)SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据;

(3)侦听的端口必须是没有被其它程序占用,可以使用 telnet 来检测端口是否开启,命令:telnet IP 端口 或者 telnet 域名 端口。

版权归 马富天PHP博客 所有

本文标题:《SSH 本地端口转发和远程端口转发》

本文链接地址:http://www.mafutian.net/426.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

1

0

上一篇《 wampserver 2.5 下面添加其它 php 版本的方法简要 》 下一篇《 二分查找算法的时间复杂度计算(logN) 》

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多