通过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多IP解析:提升网站性能与可用性

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

    2024年3月17日
    00
  • Google:不作恶的科技巨头

    在信息爆炸的时代,我们每天都会依赖搜索引擎来获取各种信息,但你是否曾想过,搜索引擎背后的故事是如何演变成今天这个样子的呢?让我们一起探索Google这个科技巨头的发展历程和公司介绍,以及它的著名口号:“不作…

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

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

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

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

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

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

    2023年9月3日
    00
  • 申请免费的通配符SSL证书教程

    想象一下,您正在拥有一个精彩的网站,拥有各种各样的子域名,如“blog.example.com”、“shop.example.com”,以及“community.example.com”。您的用户数量不断增加,他们依赖您的网站来获取信息、购物和互动。然而,您…

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

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

    2023年10月5日
    00
  • 亚马逊:从线上书店到全球电商巨头的发展历程

    曾经有一个年轻人,他在自己的车库里开始了一项看似不起眼的业务,但最终,这项业务改变了全球购物的方式。这个年轻人的名字叫杰夫·贝佐斯(Jeff Bezos),他创建了亚马逊,一个从线上书店起步,发展成为全球最大的…

    2023年10月27日
    00
  • 如何在Linux/Ubuntu 20.04中修改SSH默认端口

    在互联网上,保护服务器的安全是至关重要的。其中一个重要的安全措施是修改SSH(Secure Shell)的默认端口,这可以减少恶意攻击的风险。在这篇教程中,我们将学习如何在Linux/Ubuntu 20.04操作系统中修改SSH的默认2…

    2024年1月7日
    00
  • 如何在腾讯云创建文件系统及挂载点

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

    2023年10月19日
    00