Posted in: IT, PC/macOS, Ubuntu/Linux

cloudflared 用起来爽歪歪😊

工作用的服务器不能远程登陆 SSH,这是为了安全考虑大部分机构都会这么做。想要远程登陆,我们的做法是专门设置一台“跳板机”进行中转登陆。可惜昨天“跳板机”出故障坏掉了,自然无法远程登陆了,维修需要在下周进行。那么我是不是只能到现场上班、无法远程工作了呢?当然不是,我想到了 cloudflared。

操作方法很简单,问 ChatGPT 就可以了。用英文提问会得到更加准确的回答。在提问时要指出来自己没有 root 权限,它就会告诉你每一步的操作步骤。简单来说就是:

  1. 首先去一趟现场,在内网登陆服务器。
  2. 在服务器上安装 cloudflared 并按照 ChatGPT 给的步骤进行设置。因为没有 root 权限,所以最后会用 nohup 这种命令来运行它,让它常驻后台。
  3. 在自己电脑上也安装 cloudflared,不过不用常驻后台,只是连接 SSH 时调用它。
  4. 按照步骤连接 SSH 就行。测试成功后,就可以放心地回家了。
  5. 等下周故障修复后,自己关闭服务器上的 cloudflared。毕竟是权宜之计,一直运转着也不好。

小坑

令我没想到的是:cloudflared 在 macOS 上竟然被视为不安全软件,需要手动放行。真严格啊。

大坑:需要禁用 cloudflared 的自动更新

爽歪歪了一天之后,第二天早上出问题了:无法远程 SSH 连接服务器了。明显这是因为服务器上的 cloudflared 被中止了。我猜想可能是由于某种原因服务器自己重启了,导致 cloudflared 被终止。毕竟 nohup 运行的程序并没有系统自启动的能力。但是到了现场一看,令我大跌眼镜的是:服务器本身并没有重启,而是 cloudflared 自己自动更新了🔄。log 是这样的:

2025-02-27T01:30:21Z INF Registered tunnel connection connIndex=3 connection=XXXXXXXXXX event=0 ip=XXXXX location=nrt07 protocol=quic
2025-02-28T01:30:19Z INF cloudflared has been updated version=2025.2.1
2025-02-28T01:30:19Z ERR Initiating shutdown error="cloudflared has been updated to version 2025.2.1"
2025-02-28T01:30:19Z ERR icmp router terminated error="context canceled"
2025-02-28T01:30:19Z INF Metrics server stopped
2025-02-28T01:30:19Z ERR Failed to serve tunnel connection error="context canceled" connIndex=2 event=0 ip=XXXXXXXXX
2025-02-28T01:30:19Z WRN Failed to serve tunnel connection error="context canceled" connIndex=1 event=0 ip=XXXXXXXXX
2025-02-28T01:30:19Z ERR Failed to serve tunnel connection error="context canceled" connIndex=3 event=0 ip=XXXXXXXXX
2025-02-28T01:30:19Z ERR Failed to serve tunnel connection error="context canceled" connIndex=0 event=0 ip=XXXXXXXXX
2025-02-28T01:30:19Z INF Tunnel server stopped
cloudflared has been updated to version 2025.2.1

更新之后,程序自己会停止这是可以理解的,毕竟 nohup 运行的后台程序也不会有自启动的能力。但最可恶的是:自动更新居然是默认选项❗️😡💢。这是有多么傻缺的人会把自动更新作为默认选项啊❗️😡💢。他们不知道更新完后需要手动启动吗?都失联了还怎么手动启动啊。

解决方法是加上 --no-autoupdate 这个选项。

nohup cloudflared tunnel --config ~/.cloudflared/config.yml --no-autoupdate run <yourname>

启动之后检查日志里面确定有 no-autoupdate:true 了,方可离开现场。这样一来,只要服务器自己网络不断、自己不重启,就可以一直用下去了。

排除这个大坑后,一切都很正常。因此我不禁有一个疑问:对于能够上网的 Server 来说,是否完全可以不必要暴露任何 SSH 端口?cloudflared 是否可以完美替代?当然这里所说的是所在国家具有正常网络环境的前提下。🇨🇳那种把 CF 当作减速器的就不提了。

Comments (5) on "cloudflared 用起来爽歪歪😊"

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注