反向 SSH 代理配置

前言

      最近需要经常远程去配置一台主机,主机处于内网,出口没有固定的公网IP,一般的操作就是先远程登录到机房内的一台跳板机,然后再通过跳板机登录到需要配置的主机。这样操作一个是比较麻烦,另外一个就是受限于跳板机,无法去复制粘贴配置命令,所以就想到了利用 SSH 的反向代理功能,利用位于公网上的一台 ECS 进行中转这样一种方案。

操作步骤

公网 ECS 配置

  1. 修改 ECS 的配置文件 vim /etc/ssh/sshd_config,将 GatewayPort 前面的 # 号删除,将 no 修改为 yes,修改后,保存退出
# ...
#AllowAgentForwarding yes
#AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
# ...
  1. 重启 ssh 服务
systemctl restart sshd

被远程主机配置

  1. 执行下列命令,提示需要输入密码,输入 ECS 的远程登录密码
ssh -CqTfnN -R 0.0.0.0:60022:127.0.0.1:22 root@1.1.1.1
ssh -CqTfnN -R 0.0.0.0:{公网端口}:127.0.0.1:22 root@{公网IP}

连接测试

  1. 在外网使用以下命令登录到被远程主机,然后输入被远程的主机的密码即可登录成功
ssh -p 60022 root@1.1.1.1
ssh -p 60022 root@{公网IP}

总结

  1. 使用 ECS 需要在云平台内的安全组中放行相应的端口号;
  2. root 用户权限太高,可以新建一个普通用户替代 root 用户使用;
  3. 密码一定要设置的比较复杂,以防被爆破。

THE END