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

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

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

    2023年9月3日
    00
  • Cloudflare如何工作:增强互联网安全性、性能和可靠性

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

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

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

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

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

    2023年10月19日
    00
  • 远程桌面工具:让你的电脑随时随地可达

    有没有想过能够远程连接到一台电脑的便利性?也许你想要帮助朋友解决他们电脑上的问题,或者你需要远程连接到另一台电脑来进行工作。 无论你的用途是什么,Linux 上的远程桌面工具让你可以轻松连接。当然,每个工具…

    2023年10月28日
    00
  • 微软超越苹果:AI时代科技巨头的市值之战

    最近,微软凭借在云计算和人工智能领域的显著进展,其市值超过苹果,成为全球市值最高的公司。作为技术博客的作者,我深入分析了两家公司的竞争历程、目前的市场表现,以及未来的发展趋势,探讨了这一变化对科技行…

    2024年4月10日
    00
  • 如何在Ubuntu 20.04上启用SSH Root密码登录

    在Ubuntu 20.04上,SSH(Secure Shell)是一种强大的远程连接工具,它允许您通过网络安全地访问您的服务器。默认情况下,SSH不允许Root用户使用密码进行登录,这是为了提高安全性而设计的。然而,在某些情况下,您…

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

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

    2023年10月27日
    00
  • 存储类型比较:对象存储、块存储和文件存储

    在云计算和数据存储领域,有三种常见的存储类型,分别是对象存储、块存储和文件存储。这些存储类型在不同的应用场景中具有各自的优势和用途。本教程将详细比较这三种存储类型,帮助您了解它们的区别以及何时使用哪…

    2023年11月7日
    00