用 CF Tunnel 给服务器添加网页 SSH 访问,可防扫描攻击

本方法方法适用且不限于:

  • 给内网服务器提供 SSH 访问方案;
  • 在仅 IPv4 环境用 SSH 访问仅 IPv6 环境的服务器,反之亦然;
  • 服务器和本机之间被防火墙阻隔,需中转转发 SSH 访问;
  • 因网络环境原因直接使用 SSH 访问主机速度过慢;
  • 防止服务器地址泄露或端口扫描导致 SSH 被破解。

配置方法:

  1. 在(任意能直接访问到欲用 SSH 连接的服务器的)服务器安装 cloudflared 并连接至 Cloudflare Zero Trust;
    若欲在 IPv6 环境下使用 cloudflared,需修改启动命令:在 cloudflared tunnelrun 之间增加 --edge-ip-version 6 参数;
  2. 配置 Tunnel:


    主机名(图中的 localhost)或 IP 对应要用 SSH 访问的服务器的相对地址;端口(图中的 22)对应服务器的 SSH 端口。
  3. 配置策略:


    在策略配置中可选择对访问网页 SSH 的用户 IP 段、所在地区、邮箱验证、密钥和生物密钥验证的多种限制。
  4. 配置应用:



    可在应用的体验设置和高级设置中配置出错自定义跳转、主题色和图标等个性化功能。
  5. 访问在第二步配置的如 https://ssh.你的.域名:授权、登录并使用网页 SSH 面板。

14 个赞

感谢大佬!

感谢大佬分享

学到了一波

也不知道怎么回事,zero trust验证完后就成这样,一直进不到ssh界面

怪怪的,佬的 cloudflared 是 docker 部署的吗?若是,Tunnel 的地址可能需填写 172.17.0.1:22(即指向主机的 22 端口,有的 docker 配置了 host 网络直接用 localhost:22 即可)。

佬还需检查自己的 sshd 配置的是否是 22 端口。

看看 cloudflared 是否存在报错信息。

先用docker不行,就直接在宿主机上跑了,还是不行,端口肯定改了,22太不安全

Cloudflared 有异常日志吗?

感谢佬友

感谢佬友分享

给自己宽带所在的网段(ipv4、ipv6)加个白名单其他的ip一律拦截就行。
没必要这么折腾。
cf tunnel可以做更有用的事情。 :bili_022:
比如内网穿透(比如国内服务器要备案才开端口的)


要善于运用服务器厂商提供的防火墙。

没有看到异常,给ai看了也说没啥问题,tunnel是通的,但是ssh不行,昨天看了一天,不想折腾了

1 个赞

确实。

只是这个东西刚好满足策略禁止异地组网、代理的仅 IPv4 出入口的客户机 SSH 连接仅 IPv6 出入口的无公网 IP 的服务器的需求叻。:smiley: