SSH使用ProxyCommand通过代理服务器远程连接其他服务器

当前环境拓扑图:

  用户管理海外服务器,通过公网SSH远程时,由于网络质量原因公网丢包严重,这就导致管理员在对海外云主机进行管理时体验较差,表现形式可能是由于公网丢包严重执行命令卡顿,或者SSH进程异常中断等。
  针对上述需求,给出以下方案来优化此问题。

  • 新增一台代理服务器,此服务器到用户的网络质量和到海外服务器的网络质量良好,可以充当中间桥梁,途中我们以香港服务器为例。
  • 管理员通过使用代理服务器充当跳板机来对海外服务器进行管理。

操作步骤:

代理服务器配置

  首先需要在代理服务器上启动一个socks代理服务,并将此服务的端口授权给管理员可以进行访问。
  关于socks代理有各种服务可以实现,在这里我们为了操作最轻量级就直接使用系统自带的SSH来实现此功能。
ssh -p5258 -fqND 0.0.0.0:6565 root@127.0.0.1
  使用以上命令可以建立一个SSH隧道代理,以下是上述参数的含义:

  • -p5258:由于我们要连接的隧道服务器的ssh端口是5258,所以在此需要使用-p进行指定;
  • -fqND:f表示后台认证用户名/密码无须登录到远程主机,通常和N(不执行脚本或命令)连用,q表示禁用告警和诊断消息,D表示指定本地机器进行动态端口转发;
  • 0.0.0.0:6565:表示监听在此台机器上所有IP的6565端口;
  • root@127.0.0.1:表示在本地上启用代理服务,也可以换成其他服务器,特定场景特定需求。

管理用户连接

ssh -o ProxyCommand="nc -X 5 -x 114.114.114.114:6565 %h %p" root@8.8.8.8
  设置完代理服务器后,在ssh时需要指定代理服务器的IP及端口信息,最后指定要连接到的服务器即可,登录成功后服务器会给出登录的IP地址,或者使用who命令进行查看,只要登录的IP地址是代理服务器的地址表示所有配置正常。

原文地址:https://www.cnblogs.com/Cherry-Linux/p/11321487.html