1、本地转发
基本命令:
ssh -L local_port:target_ip:target_port username@tunnel_host_ip -N -f -p tunnel_host_port
参数说明:
- -L:转发本地端口。
- -N:不发送任何命令,只用来建立连接。没有这个参数,会在 SSH 服务器打开一个 Shell。
- -f:将 SSH 连接放到后台。没有这个参数,暂时不用 SSH 连接时,终端会失去响应。
- -p:代理主机tunnel_host_ip SSH登录的端口,一般是22。
- tunnel_host_ip:代理(隧道)主机的ip。
- username:SSH登录tunnel_host_ip 的用户名。
- local_port:本地端口。
- target_ip:要转发的目标主机ip。
- target_port :要转发的目标主机端口。
实现作用:
当本地pc上的程序访问本地的local_port端口时,相当于访问target_ip主机的target_port端口,这个转发是由tunnel_host_ip主机实现,这个ssh验证使用主机需要tunnel_host_ip、username和 -p登录的端口(当然还有密码)。要求,本地pc能直接访问tunnel_host_ip主机,并且tunnel_host_ip主机能直接访问target_ip主机。
2、远程转发
基本命令:
ssh -C -R remote_port:target_ip:target_port username@remote_host_ip -N -f -p remote_host_port
参数说明:
- -C:传输数据压缩。
- -R:远程端口转发。
- -N:不发送任何命令,只用来建立连接。没有这个参数,会在 SSH 服务器打开一个 Shell。
- -f:将 SSH 连接放到后台。没有这个参数,暂时不用 SSH 连接时,终端会失去响应。
- -p:代理主机remote_host_ip SSH登录的端口,一般是22。
- remote_host_ip:代理(隧道)主机的ip。
- username:SSH登录tunnel_host_ip 的用户名。
- remote_port:远程端口。
- target_ip:要转发的目标主机ip。
- target_port :要转发的目标主机端口。
实现作用:
当程序访问remote_host_ip(外网) 的 remote_port 端口时,相当于访问target_ip(内网)主机的target_port端口,这个转发是由remote_host_ip(外网)主机与发起这个ssh请求的主机(内网主机)实现,这个ssh验证使用主机需要remote_host_ip、username和 -p登录的端口(当然还有密码)。要求,发起这个ssh请求的主机能直接访问remote_host_ip 主机,并且发起这个ssh请求的主机能直接访问target_ip主机。
参考
https://wangdoc.com/ssh/port-forwarding