正向连接
// 将中间主机可访问的主机的指定端口 镜像到本地指定端口
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 root@218.200.20.1
然后再在[个人主机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 root@218.200.20.2
其实在外地的同事只需要访问本机的127.0.0.1:2121就相当于访问192.168.1.101:21了