SSH代理篇

一直对正向代理和反向代理区别有点模糊,傻傻分不清楚。看了几篇文章有些粗略的理解,举个栗子来说明并记录。

-N:指定这个SSH连接只进行端口消息转发,不执行任何SSH远程命令; -L:指定本地监听的地址和端口;-R: 指定远程端口和本地监听地址 -f: 这个SSH会话放入后台运行,不加这个参数的话,当退出当前SSH -L指定的终端时,端口转发进程就结束了,端口转发送也就结束了。所以务必要加上-f参数。> vim /etc/ssh/sshd_config # GatewayPorts no GatewayPorts yes > systemctl restart sshd

场景1-正向代理

需在机器B上访问机器C上的服务,就可在机器B上运行

Host_B $ssh -LfN 0.0.0.0:Port_B:Host_C:Port_Cuser@Host_A

这时访问 localhost : Port_B 相当于访问 Host_C : Port_C ,也就是将Host_A当做跳板了

场景2-反向代理

需在机器B上访问机器C上的服务,也就是将Host_C:Port_C上的服务暴露出来,就可在机器C上运行

Host_C $ ssh -RfN Host_A:Port_A:Host_C:Port_Cuser@Host_A