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