通过Cloudflare隧道连接SSH服务器:实现安全远程访问

嗨,大家好!在这个信息时代,远程访问和安全性变得愈发重要。你是否曾想过如何在不暴露服务器的入站端口的情况下,在互联网上提供SSH服务?别担心,今天我将为你介绍如何通过Cloudflare Zero Trust实现这一目标,确保你的SSH服务器安全可达。废话不多说,让我们开始吧!

步骤1:在GCP上设置SSH服务器

首先,我们需要在Google Cloud Platform(GCP)虚拟机上设置一个SSH服务器。这里以GCP为例,但你可以在支持SSH连接的任何机器上进行设置。

1. 创建SSH密钥对

在创建VM实例之前,你需要创建一个SSH密钥对。打开终端并运行以下命令:

ssh-keygen -t rsa -f ~/.ssh/gcp_ssh -C <你在GCP中的用户名>

在提示时输入你的密码。需要输入两次。

命令行中运行:

cat ~/.ssh/gcp_ssh.pub

复制输出内容,这将在创建GCP VM实例时使用。

2. 在GCP上创建VM实例

现在,SSH密钥对已经创建,你可以创建一个VM实例了。

  • 在Google Cloud控制台中,创建一个新项目。
  • 转到Compute Engine > VM实例。
  • 选择“创建实例”。
  • 为你的VM实例命名,例如ssh-server。
  • 滚动到“高级选项” > “安全性” > “访问管理”。
  • 在“手动添加生成的SSH密钥”下,选择“添加项目”,并粘贴之前创建的公钥。
  • 选择“创建”。

一旦你的VM实例运行起来,点击SSH旁边的下拉菜单,选择在浏览器窗口中打开。为了能够建立SSH连接,不要在VM实例上启用OS登录。

步骤2:使用WARP隧道连接SSH服务器

你可以使用Cloudflare Tunnel来创建从服务器到Cloudflare边缘的安全出站连接。这需要在服务器上运行cloudflared守护程序。用户通过在其设备上安装Cloudflare WARP客户端并加入你的Zero Trust组织来访问该服务。远程设备可以像在你的私有网络上一样连接。默认情况下,所有加入你组织的设备都可以访问该服务,除非你构建策略来允许或阻止特定用户。

1. 连接服务器到Cloudflare

通过按照我们的仪表板设置指南为你的服务器创建一个Cloudflare隧道。你可以跳过连接应用程序的步骤,直接转到连接网络。

在隧道的“私有网络”选项卡中,输入服务器的私有IP地址(或包括服务器IP的范围)。在GCP中,服务器IP是VM实例的内部IP。

(可选)设置Zero Trust策略以微调对服务器的访问。

2. 设置客户端

要将你的设备连接到Cloudflare:

  • 在设备上以WARP模式部署WARP客户端。仅当你想要显示自定义阻止页面或过滤HTTPS流量时才需要Cloudflare证书。
  • 创建设备注册规则,以确定哪些设备可以加入你的Zero Trust组织。

3. 通过WARP路由私有网络IP

默认情况下,WARP客户端将RFC 1918空间的流量排除在Split Tunnel功能之外。例如,WARP自动排除10.0.0.0/8,这些IP地址通常用于私有网络,无法从互联网访问。为了让WARP将流量发送到你的私有网络,你需要在Split Tunnel配置中包括你为Cloudflare隧道指定的IP/CIDR。

要配置私有网络访问的Split Tunnel,请按照以下步骤:

  • 首先,检查你的Split Tunnel模式是否设置为排除或包括模式。
  • 如果你使用的是包括模式,请将你的网络IP/CIDR范围添加到列表中。
  • 如果你使用的是排除模式:
    • 从列表中删除你的网络IP/CIDR范围。例如,如果你的网络使用默认的AWS范围172.31.0.0/16,请删除172.16.0.0/12。
    • 重新添加没有被你的私有网络明确使用的IP/CIDR范围。对于上面的AWS示例,你需要为172.16.0.0/13、172.24.0.0/14、172.28.0.0/15和172.30.0.0/16添加新的条目。这确保了只有流向172.31.0.0/16的流量通过WARP。

通过缩小WARP中包含的私有IP范围,你可以降低用户访问本地资源的风险。

4. 作为用户进行连接

一旦你设置了应用程序和用户设备,用户现在可以使用其私有IP地址通过SSH连接到机器。如果你的SSH服务器需要SSH密钥,该密钥应包含在命令中。

ssh -i ~/.ssh/gcp_ssh <用户名>@<服务器IP>

通过cloudflared访问SSH服务器

Cloudflare隧道还可以将应用程序路由到公共主机名,允许用户在不使用WARP客户端的情况下连接到应用程序。这需要在服务器机器和客户机器上都安装cloudflared,以及在Cloudflare上拥有活动区域。流量通过此连接代理,用户使用Cloudflare Access凭

证登录到服务器。

公共主机名方法可以与通过WARP进行路由一起实施,以便有多种连接服务器的方式。你可以重复使用同一个隧道用于私有网络和公共主机名路由。

1. 连接服务器到Cloudflare

按照我们的仪表板设置指南创建一个Cloudflare隧道。

在“公共主机名”选项卡中,选择下拉菜单中的域名,并指定任何子域名(例如,ssh.example.com)。

对于“服务”,选择SSH,并输入localhost:22。如果SSH服务器与你安装隧道的机器不在同一台机器上,请输入<服务器IP>:22。

选择“保存主机名”。

(建议)添加一个自托管应用程序到Cloudflare Access,以管理对服务器的访问。

2. 作为用户进行连接

用户可以通过通过cloudflared进行身份验证,或者从浏览器呈现的终端进行连接。

本地终端
在客户机器上安装cloudflared。

对你的SSH配置文件进行一次性更改:

vim ~/.ssh/config

输入以下值;替换ssh.example.com为你创建的主机名。

Host ssh.example.com
ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h

cloudflared的路径可能因你的操作系统和包管理器而异。例如,如果你使用Homebrew在macOS上安装了cloudflared,路径是/opt/homebrew/bin/cloudflared。

现在,你可以通过运行一个命令来测试连接到服务:

ssh <用户名>@ssh.example.com

当运行命令时,cloudflared将启动一个浏览器窗口,提示你在建立连接之前使用身份提供者进行身份验证。

浏览器呈现的终端
终端用户可以在不进行任何配置的情况下,使用Cloudflare的基于浏览器的终端连接到SSH服务器。当用户访问公共主机名URL(例如https://ssh.example.com)并使用他们的Access凭证登录时,Cloudflare将在他们的浏览器中呈现一个终端。

结束语

通过Cloudflare Zero Trust,我们可以确保SSH服务器的安全可达性,而无需在服务器上打开入站端口。这为远程访问提供了更高的安全性,同时保持了便利性。希望本教程能对你有所帮助,让你的SSH服务器更安全,更容易访问。如果你有任何问题或疑虑,请随时在评论中分享。

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:通过Cloudflare隧道连接SSH服务器:实现安全远程访问

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年9月25日
下一篇 2023年9月25日

相关推荐

  • Cloudflare如何工作:增强互联网安全性、性能和可靠性

    在今天的数字化世界中,网站的安全性和性能变得至关重要。无论您是拥有小型博客还是大型电子商务网站,都需要确保您的网站既安全又高效。在这个背景下,Cloudflare作为一家领先的网络服务提供商,为网站提供了极大…

    2023年8月27日
    00
  • 在Cloudflare上添加网站并完成设置

    Cloudflare是一家功能强大的网络服务平台,它不仅可以提升您的网站性能、安全性和可用性,还可以帮助您在互联网上大放异彩。在本教程中,我们将向您展示如何在Cloudflare上添加您的网站并完成必要的设置,以确保您…

    2023年8月27日
    00
  • Cloudflare多IP解析:提升网站性能与可用性

    摘要: 在互联网上,网站的可用性和性能至关重要。Cloudflare作为一家知名的CDN服务提供商,通过多IP解析技术为网站提供更好的性能和可用性。本文将探讨Cloudflare多IP解析的工作原理、优势以及如何配置。 作为一名…

    2024年3月17日
    00
  • 如何实现在当前会话断开后程序的暂停和后台继续运行

    在快节奏的现代生活中,我们经常需要在SSH会话中运行程序,但如果会话断开了,程序也会随之中断,这让人颇为苦恼。曾经有一位名叫BellaCampen的用户在社交媒体上提出了这个问题,引发了大家的讨论。今天,我们将为…

    2023年10月5日
    00
  • 如何在腾讯云创建文件系统及挂载点

    在数字化时代,数据管理和存储对于企业和个人都至关重要。无论是为了备份重要文件还是为了提供共享资源,文件系统是一个不可或缺的组成部分。腾讯云为用户提供了创建文件系统及挂载点的便捷工具,本文将详细介绍如…

    2023年10月19日
    00
  • 创建谷歌云服务器 – 云计算的无限可能

    王大神,一位对技术充满热情的自由职业者,每天都在追求工作和生活的高效。他发现,在远程工作和音乐爱好之外,云计算成为了他工作中不可或缺的一部分。在这个数字化时代,王大神决定分享他的经验,为大家创建谷歌…

    2023年12月26日
    00
  • 使用腾讯云对象存储 COS API:轻松管理您的云数据

    在数字化时代,云存储成为了数据管理的核心,而腾讯云对象存储 COS 提供了便捷的API接口,让您可以直接通过HTTP/HTTPS请求与云后台进行数据交互。本文将为您详细介绍如何使用腾讯云对象存储 COS API,让您轻松管理…

    2023年10月19日
    00
  • 远程管理Linux系统:通过SSH执行命令

    在现代计算机管理中,远程管理变得愈发重要,而SSH(Secure Shell)协议为在远程系统上执行命令或程序提供了强大的工具。SSH不仅允许我们避免频繁登录和注销远程系统,还可以在数据安全性得到保障的同时轻松进行管…

    2023年9月3日
    00
  • 王大神解析:Cloudflare CDN的奥秘及其在AI领域的应用

    在我多年的技术探索之旅中,我深知一个拥有高速和稳定访问的网站对于吸引和保持用户的重要性。今天,让我们一起深入探究Cloudflare CDN技术的奥秘,以及它如何在AI技术领域大放异彩。 1. CDN技术的崛起 在数字世界…

    2023年9月7日
    00
  • 微软:从彩蛋恶搞到科技巨头的发展历程

    很多人都知道微软是一家全球知名的科技巨头,但你是否听说过微软的彩蛋和恶搞事件?今天,我们将深入探讨微软的发展历程,从其创立之初的彩蛋恶搞,到如今的技术创新和全球影响力。让我们一起回顾微软的独特之旅。 …

    2023年10月27日
    00