SSH的正向连接和反向连接

正向连接

// 将中间主机可访问的主机的指定端口 镜像到本地指定端口
ssh -L 本地IP:本地端口:中间主机可访问的IP:中间主机可访问的IP的端口 root@中间主机

案例:
公司为了安全配置了两台机器,一台可供外网访问[公司主机A]。另外一台不能外网访问[公司主机B],但可与[公司主机A]互连。

现在我在遥远外地,我要取公司[主机B]的文件,但此时无人在公司。
但我有一台连接外网的[个人主机P],可以做如下操作:
ssh -L [个人主机P]:[个人主机P未被占用的任意端口]:[公司主机B]:[公司主机B对应服务的端口] [公司主机A用户]@[公司主机A外网IP]

假设:

主机名 外网IP 内网IP
[公司主机A] 218.200.20.1 192.168.1.100
[公司主机B] 192.168.1.101
[个人主机P] 218.200.20.2

我要访问内网101的FTP的话,就在[个人主机P]上执行:
ssh -L 127.0.0.1:2121:192.168.1.101:21 [email protected]
然后再在[个人主机P]访问ftp即可访问地址为:ftp://127.0.0.1:2121

反向连接

// 将本地可访问的主机的指定端口 镜像到远程指定端口
ssh -R 远程IP:远程端口:本地可访问IP:本地可访问IP的端口 root@远程主机

案例:
公司为了安全配置了两台机器,一台可供外网访问[公司主机A]。另外一台不能外网访问[公司主机B],但可与[公司主机A]互连。

现在我在公司,外网有同事要取公司[主机B]的文件,但公司不能给他[公司主机A]的账号信息,但他知道[公司主机B]的个人FTP用户信息,但不能给我知道,无奈…..。

做以下操作:

现在可知道的信息

主机名 外网IP 内网IP 用户 密码
[公司主机A] 218.200.20.1 192.168.1.100 root 我知道
[公司主机B] 192.168.1.101 root 不知道
[同事主机P] 218.200.20.2 root 我知道

ssh -R [要接收该映射的主机的可访问IP]:[要接收该映射的主机的未占用端口]:[公司主机A可访问的主机]:[公司主机A可访问的主机的端口] [要接收该映射的主机的用户]@[要接收该映射的主机的IP]

在公司的[公司主机A]上执行
ssh -R 127.0.0.1:2121:192.168.1.101:21 [email protected]

其实在外地的同事只需要访问本机的127.0.0.1:2121就相当于访问192.168.1.101:21了

你可能感兴趣的:(ssh)