Coolify logoCoolify

通过 Cloudflare 隧道实现服务器 SSH 访问

通过 Cloudflare 隧道使用 SSH 访问服务器是一种安全且简便的方式,可以在隐藏服务器 IP 地址的同时连接到远程服务器。

适用人群

此设置非常适合以下人群:

  • 希望保持服务器 IP 地址私密的人。
  • 希望关闭服务器上 SSH 端口的人。
  • 不希望依赖静态公网 IP 来访问远程服务器的人。
  • 服务器没有静态公网 IP 的人(仅适用于执行手动设置的情况)。

开始之前

  • 我们假设您已经运行着一台安装了 Coolify 的服务器,并且正在尝试设置一个隧道,以便将另一台不同的服务器连接到 Coolify。
  • 如果您试图在运行 Coolify 的服务器上设置隧道,并且没有其他服务器需要连接,则您不需要 SSH 隧道。Coolify 已经拥有其运行服务器的完全 root 访问权限,因此在这种情况下无需使用 SSH 隧道。

工作原理?

以下是一个简单的高层概述图,帮助您直观地理解其工作原理:


设置方法

有两种设置方式:

  • 自动
  • 手动

主要区别在于,手动设置需要您自行安装 cloudflared,而在自动设置中,Coolify 会为您完成此操作。

要使用 Coolify 的自动设置来配置 Cloudflare 隧道:

  • 在初始设置期间,您的远程服务器必须具有公网 IP 地址活动的 SSH 端口,以便 Coolify 配置隧道。设置完成后,您可以关闭服务器上的所有端口。
  • 如果您的服务器没有公网 IP 地址,则此自动设置不适合您。请改为遵循手动设置指南。
  • 您需要一个DNS 由 Cloudflare 管理的域名。

示例数据

以下数据在本指南中用作示例。请按照步骤操作时将其替换为您的实际数据:

  • 远程服务器的 IPv4 地址: 192.168.1.93
  • SSH 域名: helixa.shadowarcanist.com
  • 用户名: root
  • SSH 端口: 22

1. 创建私有 SSH 密钥

  1. 在您的 Coolify 仪表板中,转到密钥与令牌 (Keys & Tokens)
  2. 点击私有密钥 (Private Keys) 选项卡
  3. 点击 + 添加 (+ Add) 按钮

系统将提示您选择密钥类型,并为密钥提供名称和描述。

  1. 点击生成新的 ED25519RSA 按钮以生成新的 SSH 密钥。
  2. 复制公钥并将其保存在安全的地方(下一步需要用到)。
  3. 点击 继续 (Continue) 按钮。

2. 将公钥添加到您的服务器

SSH 登录到您要连接到 Coolify 的服务器:

ssh root@192.168.1.93

登录后,将您的公钥添加到授权密钥文件中:

echo "<在此引号内粘贴您的公钥>" >> ~/.ssh/authorized_keys

3. 将您的服务器添加到 Coolify

  1. 在您的 Coolify 仪表板中,转到服务器 (Servers)
  2. 点击 + 添加 (+ Add) 按钮

系统将提示您输入有关服务器的详细信息。请确保提供的信息准确无误,因为 Coolify 将使用这些详细信息来访问您的服务器。

  1. 名称 (Name) - 选择一个名称,以便在仪表板中轻松识别您的服务器。
  2. 描述 (Description) -(可选)为您的服务器提供描述。
  3. IP 地址/域名 (IP Address/Domain) - 输入服务器的公网 IP 地址。
  4. 端口 (Port) - 输入服务器用于 SSH 连接的端口号。
  5. 用户 (User) - 输入 Coolify 将使用的用户名(该用户应在服务器上具有 root 权限)。
  6. 私有密钥 (Private key) - 选择您在步骤 1 中创建的私有密钥
  7. 填写完详细信息后,点击 继续 (Continue) 按钮。

4. 在 Coolify 上验证您的服务器

要验证您的服务器,只需点击 验证服务器并安装 Docker 引擎 (Validate Server & Install Docker Engine) 按钮。

在此过程中,Coolify 将登录到您的服务器并设置 Coolify 使用服务器所需的一切。

验证完成后,您的服务器页面将如下所示:

5. 创建 Cloudflare 隧道

要创建 Cloudflare 隧道,首先登录到您的 Cloudflare 仪表板

  1. 转到侧边栏中的 网络 (Networking)
  2. 点击 隧道 (Tunnels)
  3. 点击 创建隧道 (Create tunnel) 按钮

系统将提示您输入隧道名称。输入您喜欢的名称,然后点击 创建隧道 (Create tunnel) 按钮。

  1. 选择 Docker 选项
  2. 复制 docker run 命令,其中包含您隧道的令牌(令牌以 "eyJ" 开头)。请确保仅保存令牌,删除其前面的命令部分,并将其存储在安全的地方,因为稍后我们需要用到它。

6. 在 Coolify 上配置 Cloudflare 隧道

  1. 在您的 Coolify 仪表板中,转到 Cloudflare 隧道 (Cloudflare Tunnel)
  2. 在手动部分输入您的 Cloudflare 令牌 (Cloudflare Token)SSH 域名 (SSH Domain)
  3. 点击 继续 (Continue) 按钮

提示

Cloudflare 令牌包含在您在上一步中复制的 docker run 命令 中。令牌以 eyJ 开头。

一旦 cloudflared 开始运行,您将能够在 Cloudflare 仪表板上看到其状态:

点击继续按钮以创建隧道。

7. 配置隧道路由

  1. 点击您的隧道
  2. 点击 配置 (Configure) 选项
  1. 选择 路由 (Routes)
  2. 点击 添加路由 (Add route) 按钮
  1. 选择 已发布的应用程序 (Published Application) 作为路由类型
  1. 子域名 (Subdomain) -(可选)您可以使您的资源在任何子域名/域名上可访问。在本指南中,我们使用 helixa 子域名。
  2. 域名 (Domain) - 选择您要用于隧道的域名。
  3. 路径 (Path) - 留空此字段。
  4. 服务 URL (Service URL) - 输入 ssh://localhost:22(这非常重要)。如果您的 SSH 端口不是 22,请使用该端口号。
  5. 填写完详细信息后,点击 添加路由 (Add route) 按钮。

配置好隧道后,Coolify 会自动将服务器 IP 地址更改为 Cloudflare SSH 域名。

如果它没有自动更新,请在此处手动将 IP 地址更改为 SSH 域名:

恭喜! 您已成功设置了一台可以通过 Coolify 使用 Cloudflare 隧道通过您的域名进行 SSH 访问的服务器。

现在,如果您愿意,可以阻止服务器上的 SSH 端口。

To manually setup Cloudflare Tunnel:

  • 您需要访问远程服务器以安装 cloudflared(您的服务器不需要公网 IP)。
  • 您需要一个 DNS 由 Cloudflare 管理 的域名。

示例数据

以下数据在本指南中用作示例。请按照步骤操作时将其替换为您的实际数据:

  • 远程服务器的 IPv4 地址: 192.168.1.93
  • SSH 域名: helixa.shadowarcanist.com
  • 用户名: root
  • SSH 端口: 22

1. 创建私有 SSH 密钥

  1. 在您的 Coolify 仪表板中,转到密钥与令牌 (Keys & Tokens)
  2. 点击私有密钥 (Private Keys) 选项卡
  3. 点击 + 添加 (+ Add) 按钮

系统将提示您选择密钥类型,并为密钥提供名称和描述。

  1. 点击生成新的 ED25519RSA 按钮以生成新的 SSH 密钥。
  2. 复制公钥并将其保存在安全的地方(下一步需要用到)。
  3. 点击 继续 (Continue) 按钮。

2. 将公钥添加到您的服务器

SSH 登录到您要连接到 Coolify 的服务器:

ssh root@192.168.1.93

登录后,将您的公钥添加到授权密钥文件中:

echo "<在此引号内粘贴您的公钥>" >> ~/.ssh/authorized_keys

3. 将您的服务器添加到 Coolify

  1. 在您的 Coolify 仪表板中,转到服务器 (Servers)
  2. 点击 + 添加 (+ Add) 按钮

系统将提示您输入有关服务器的详细信息。

  1. 名称 (Name) - 选择一个名称,以便在仪表板中轻松识别您的服务器。
  2. 描述 (Description) -(可选)为您的服务器提供描述。
  3. IP 地址/域名 (IP Address/Domain) - 输入您希望通过 Cloudflare 隧道访问服务器的 SSH 域名。
  4. 端口 (Port) - 输入服务器用于 SSH 连接的端口号。
  5. 用户 (User) - 输入 Coolify 将使用的用户名(该用户应在服务器上具有 root 权限)。
  6. 私有密钥 (Private key) - 选择您在步骤 1 中创建的私有密钥
  7. 填写完详细信息后,点击 继续 (Continue) 按钮。

4. 在 Coolify 上配置 Cloudflare 隧道

  1. 在您的 Coolify 仪表板中,转到 Cloudflare 隧道 (Cloudflare Tunnel)
  2. 点击仪表板上信息消息中的 此处 (here) 文本

5. 创建 Cloudflare 隧道

要创建 Cloudflare 隧道,首先登录到您的 Cloudflare 仪表板

  1. 转到侧边栏中的 网络 (Networking)
  2. 点击 隧道 (Tunnels)
  3. 点击 创建隧道 (Create tunnel) 按钮

系统将提示您输入隧道名称。输入您喜欢的名称,然后点击 创建隧道 (Create tunnel) 按钮。

  1. 选择 Docker 选项
  2. 复制 docker run 命令,并在您要连接到 Coolify 的服务器终端上运行它。

提示

默认情况下,docker run 命令以前台模式运行。这意味着如果您关闭终端,cloudflared 容器将停止运行。要使容器在后台保持运行,请在运行命令时添加 -d 标志。

例如:docker run -d cloudflare/...

一旦 cloudflared 开始运行,您将能够在 Cloudflare 仪表板上看到其状态:

点击继续按钮以创建隧道。

6. 配置隧道路由

  1. 点击您的隧道
  2. 点击 配置 (Configure) 选项
  1. 选择 路由 (Routes)
  2. 点击 添加路由 (Add route) 按钮
  1. 选择 已发布的应用程序 (Published Application) 作为路由类型
  1. 子域名 (Subdomain) -(可选)您可以使您的资源在任何子域名/域名上可访问。在本指南中,我们使用 helixa 子域名。
  2. 域名 (Domain) - 选择您要用于隧道的域名。
  3. 路径 (Path) - 留空此字段。
  4. 服务 URL (Service URL) - 输入 ssh://localhost:22(这非常重要)。如果您的 SSH 端口不是 22,请使用该端口号。
  5. 填写完详细信息后,点击 添加路由 (Add route) 按钮。

7. 在 Coolify 上验证服务器

要验证您的服务器,只需点击 验证服务器并安装 Docker 引擎 (Validate Server & Install Docker Engine) 按钮。

在此过程中,Coolify 将登录到您的服务器并设置 Coolify 使用服务器所需的一切。

验证完成后,您的服务器页面将如下所示:

恭喜! 您已成功设置了一台可以通过 Coolify 使用 Cloudflare 隧道通过您的域名进行 SSH 访问的服务器。

现在,如果您愿意,可以阻止服务器上的 SSH 端口。


已知问题及解决方案

当您在隧道中创建新路由时,Cloudflare 将为该主机名创建 DNS 记录。

但是,如果该主机名的 DNS 记录已存在,Cloudflare 不会更新现有记录。

在这种情况下,您的应用将无法工作。要解决此问题,请按照以下步骤操作:

  1. 点击您的隧道
  2. 点击 配置 (Configure) 选项
  1. 从隧道详细信息部分复制您的隧道 ID。

使用以下详细信息创建新的 DNS 记录:

  1. 在 Cloudflare 仪表板中,转到 DNS
  2. 选择 记录 (Records)
  3. 添加 CNAME 记录。
  4. 输入名称为 * 或您的子域名名称(这应与您在隧道中为应用设置的主机名匹配)。
  5. 对于 目标 (Target),输入隧道 ID 后跟 .cfargotunnel.com
  6. 将代理状态设置为 已代理 (Proxied)

现在,访问您应用的域名,它应该可以访问了。

On this page