ssh本地转发和远程转发
1. 本地转发和例子
本地机器A---能访问------>跳板机B----->能访问------>远程服务器C
本地机器A-------------不能访问------------------>远程服务器C
本地机器A----->通过本机端口以跳板机B的名义访问------>远程服务器C
本地转发的ssh命令执行点在A机器上,如下图所示:
graph LR
ssh(fa:fa-user ssh命令)-->A
subgraph
A[本地机器A] --> B(跳板机jp)
B(跳板机B) --> C[远程服务器C]
classDef green fill:#9f6,stroke:#333,stroke-width:2px;
classDef blue fill:#78f,stroke:#333,stroke-width:2px;
classDef orange fill:#f96,stroke:#333,stroke-width:4px;
class A green
class B orange
class C blue
end
在A机器上执行的命令:
ssh -L 本机绑定的端口x:远程服务器C的IP:远程服务器C的端口y user@B
执行了这条命令后,访问本机的端口x就等于 通过B服务器ssh tunnel做转发 访问服务器的端口y
2. 远程转发和例子
远程转发的ssh命令执行点在B机器上,如下图所示:
graph LR
ssh(fa:fa-user ssh命令)-->B
subgraph
A[远程服务器A] --> B(本地机器B)
B(跳板机B) --> C[远程服务器C]
classDef green fill:#9f6,stroke:#333,stroke-width:2px;
classDef blue fill:#78f,stroke:#333,stroke-width:2px;
classDef orange fill:#f96,stroke:#333,stroke-width:4px;
class A green
class B orange
class C blue
end
在B机器上执行的命令:
ssh -R 远程服务器A的端口x:要转发到的服务器C的IP:要转发到的服务器C的端口y user@A
执行了这条命令后,访问服务器A的端口x就等于 通过服务器B的ssh tunnel做转发 访问服务器C的端口y
3. 远程转发和本地转发的区别:
- 执行ssh的命令的机器不同:
-
本地转发在 本地机器A 上执行ssh命令
-
远程转发在 跳板机B 上执行ssh命令
-
- 应用场景的区别:
- 本地转发多应用于:本地服务器A不能主动连接远程服务器C,需要通过跳板机B作为代理进行转发的情形;
- 远程转发多应用于:服务器A不能主动连接服务器B(但反之可以的情形),比如:A在外网,B在内网。
[Ref]
https://www.jianshu.com/p/558781768505 https://blog.csdn.net/evandeng2009/article/details/51926797 https://blog.csdn.net/yzs2012/article/details/76850844 mermaid.min.js