Zikin 在《使用 Cloudflare Zero Trust 保护 SSH》一文中介绍了如何使用 Cloudflare ZeroTrust 保护 SSH 的方法,同时也提供了 对于网页的保护方法。本文主要补充使用 Cloudflare SSH CA 替代 SSH 公钥的使用方法,以及在部署实践中值得注意的地方。
使用 Cloudflare SSH CA 替代 SSH 公钥,可以使用 GitHub 账户或其他 OpenID Connect 方式登录您的服务器 SSH,而无需私钥或 SSH 密码。这样可以避免私钥泄漏、忘记携带私钥,对于团队统一管理多个服务器、多个用户、分配不同的服务器权限也十分有用。
由于此方法也无需在 Cloudflare WebSSH 界面输入私钥或密码,对于不信任 Cloudflare 传输私钥的场景,也可以使用此方法。
部署中的注意事项
- 对于非 HTTP 应用,Tunnel 需要占用整个域名——不能将 WebSSH 部署在子路径下。
- 对于多个服务器部署,不可以将多个服务器连接到同一个 Tunnel。需要为每个服务器创建单独的 Tunnel。
- 对于多个服务器部署,不可以多个域名共用一个 Application。
- 不可用使用四级及以上域名(如
server.ssh.example.com
)。Cloudflare 不会为四级及以上域名签发 SSL 证书。必须使用三级域名(如server-ssh.example.com
)。 - 对于 Arch Linux,删除 Tunnel 之后需要执行
rm /etc/systemd/system/cloudflared*
删除残留的服务文件。 - 即是使用 Passkey 登录 GitHub 来通过 Cloudflare ZeroTrust 认证,Cloudflare 依然不认为登录方式为
fido2
——除非您使用付费的登录管理平台(如 Okta、Duo 等)。因此请不要在登录策略中添加登录方式为fido2
的要求。 - 您的邮箱前缀(如
luotianyi@example.com
的前缀是luotianyi
)必须与您的 Linux 用户名相同。否则 Cloudflare ZeroTrust 认证会失败。