logo NodeSeekbeta

教程: SSH 连接 MUSE 的云电脑

Muse 的云电脑配置还可以,8G 内存,磁盘 100G
隔壁 L 站看到的教程,目前仅需要一个托管在 Cloudflare 的域名就可以完成操作。

但是操作流程中实测下来,要一直审批通过访问某个网站,没法设置权限让它无需审批。

搞完才看到有个自动通过的网站审批的油猴脚本,我这里没试过,佬们可以自己试一下https://linux.do/t/topic/2947924

首先在设置中放开这些权限,能开的尽量都开了
image

将此文档链接丢给 MUSE,让它依照文档执行

https://gist.githubusercontent.com/binggao1230/52d8494c50c4d9347dab55edbb5c630b/raw/8a923880234fc31751c608528d6b01fe15b39a6a/gistfile1.txt

但可能 AI 出于安全考虑,会让你通过集成把密码加密地发送给他。

进入 Cloudflare 控制台,打开:

Networking → Tunnels → Create Tunnel

新建一个 Tunnel,名称随意,例如:

muse-ssh

创建完成后,Cloudflare 会让你选择服务器系统,并生成一条类似这样的安装命令:

sudo cloudflared service install <TUNNEL_TOKEN>

把 Cloudflare 页面生成的完整命令复制给 AI,让 AI 在云端电脑中执行即可。连接成功后,Cloudflare 后台应该会显示 Tunnel 状态为:

Healthy

大概要像AI 提供以下东西,它会询问你

SSH 域名:ssh.example.com
Tunnel Token:xxxxx
SSH 公钥:ssh-ed25519 AAAA...

本地配置连接不能使用普通 SSH 客户端那样无脑输入主机名就连接,步骤比较繁琐。如果你不会的话,可以让 Codex 帮你做,把必要的密钥、连接信息发给它就行。

一、准备连接信息

准备以下三项:

信息 本文示例 用途
SSH 入口域名 ssh.example.com 启动本地 cloudflared 代理
服务器用户名 myuser SSH 登录
登录私钥 与云端 authorized_keys 中公钥配对的私钥 SSH 身份认证

后面的示例需要替换域名、用户名和私钥路径。127.0.0.1:2222 是本机连接地址,不是云端服务器地址。

公钥通常以 ssh-ed25519 AAAA... 开头,它应部署在服务器上。客户端登录使用的是与它配对的私钥,不能把公钥当成私钥导入,也不能仅凭公钥恢复私钥。若使用 Termius 生成密钥,请在 Termius 中选择原来那把密钥。

客户端不需要 Tunnel UUID、Tunnel token 或服务端 tunnel 凭据。不要在本机执行 cloudflared tunnel run,也不要把服务端 Tunnel token 填入 SSH 客户端。

二、在本机安装 cloudflared

Windows

在 PowerShell 中执行:

winget install --id Cloudflare.cloudflared --exact --accept-package-agreements --accept-source-agreements

安装后重新打开 PowerShell,确认命令可用:

cloudflared --version

如果没有 winget,可以从 Cloudflare 官方下载说明 下载适合电脑架构的 Windows 可执行文件,将其重命名为 cloudflared.exe。在该文件所在目录打开 PowerShell,后文命令中的 cloudflared 改写为 .\cloudflared.exe。

macOS

已安装 Homebrew 的电脑执行:

brew install cloudflared
cloudflared --version

Linux

按照 Cloudflare 官方下载说明 为对应发行版和 CPU 架构安装 cloudflared。安装后执行 cloudflared --version 确认可用。

三、启动本地代理

在 PowerShell 或终端中执行,替换为自己的 SSH 入口域名:

cloudflared access tcp --hostname ssh.example.com --url 127.0.0.1:2222

看到类似下面的日志,表示本地监听已启动:

INF Start Websocket listener host=127.0.0.1:2222

保持这个窗口运行,再打开 SSH 客户端进行连接。按 Ctrl+C 会停止代理;关闭窗口也会停止前台代理。重启电脑后需要重新启动。

注意:这条日志只说明本地端口已开始监听,不代表云端 SSH 已经连通。实际连接客户端时,cloudflared 才会建立到云端的连接。

如果该域名配置了 Cloudflare Access 登录策略,首次连接时可能弹出浏览器认证页面,按提示完成登录。这层认证与 SSH 私钥认证是两件事,完成浏览器登录后仍需要 SSH 私钥。

代理只监听 127.0.0.1,仅本机客户端可用。不要为了连接而改成 0.0.0.0,也无需开放 Windows 防火墙入站端口。

四、在 SSH 客户端中连接

Termius、Xshell、PuTTY 等图形客户端

新建一个 SSH 连接,填写:

设置项 填写内容
名称 自定义,例如 云端服务器-本地代理
主机 / Address / Host 127.0.0.1
端口 / Port 2222
用户名 / Username 服务器用户名,例如 myuser
认证方式 SSH 密钥 / Public Key
私钥 / Key 与云端已部署公钥配对的私钥
跳板机 / Proxy / ProxyCommand 不配置

使用 Termius 时,在连接的 Key 设置里选择对应的密钥。如果私钥有口令,连接时输入的是私钥口令,不是服务器密码。其他客户端若不支持该私钥格式,需要通过它们支持的密钥导入工具转换,例如 PuTTYgen。

这里不要填写公网域名,也不要使用远端 SSH 的 22 端口。本地代理已负责连接公网入口,客户端只需连接本机的 2222 端口。

命令行 OpenSSH

另外打开一个终端:

ssh -p 2222 [email protected]

如果私钥不在默认位置,用 -i 显式指定。

Windows PowerShell 示例:

ssh -p 2222 -i "C:\Users\你的用户名\.ssh\id_ed25519" -o IdentitiesOnly=yes myuser@127.0.0.1

macOS / Linux 示例:

ssh -p 2222 -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes [email protected]

IdentitiesOnly=yes 表示只尝试指定的登录密钥,避免客户端或 SSH Agent 提供其他密钥。

五、首次连接核对主机指纹

首次连接可能提示确认 SSH 主机指纹。虽然客户端连接地址是 127.0.0.1:2222,提示的公钥属于云端 SSH 服务器,不是本地 cloudflared。

通过服务器控制台或其他可信渠道,在云端执行:

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

将结果中的 SHA256:... 与客户端提示的 ED25519 指纹核对,一致后再接受。若客户端显示其他密钥类型,应核对服务器上对应类型的主机公钥。

不要通过关闭主机密钥校验来跳过这一步。后续若提示主机密钥发生变化,先确认是否确实重建过服务器或更换了主机密钥,再更新客户端记录。

六、日常使用与排障

日常连接顺序:先启动 cloudflared 本地代理,再打开 SSH 客户端连接 127.0.0.1:2222。断开 SSH 不会自动停止仍在运行的前台代理;停止代理会中断通过它建立的连接。

现象 检查方法
找不到 cloudflared 命令 安装后重新打开终端;手动下载的 Windows 程序使用 .\cloudflared.exe 或完整路径启动
address already in use / 端口被占用 检查是否已启动代理;若端口被其他程序占用,换成 127.0.0.1:2223,客户端端口同步改成 2223
Connection refused / 连接被拒绝 确认本地代理仍在运行,且客户端地址、端口与监听地址一致
websocket: bad handshake 或连接随即关闭 查看代理日志;核对公网域名、云端 tunnel 在线状态、SSH 路由及 Access 策略
Permission denied (publickey) 核对用户名、选择的私钥以及云端 authorized_keys 中是否有对应公钥;Tunnel token 不能代替 SSH 私钥
浏览器要求 Cloudflare Access 登录 按域名的 Access 策略完成认证,再继续 SSH 连接
主机密钥变化警告 经可信渠道重新核对云端主机指纹;不要直接删除记录或忽略警告
System is booting up 属于云端 SSH 状态问题,检查云端恢复流程及 /run/nologin,不是本地代理参数问题

本地代理通常只需要能访问域名的 HTTPS 服务,不需要直连公网 22 端口。若网络无法访问 Cloudflare,请先检查本机网络或出站代理设置。

七、本部署的实际示例

使用域名 ssh2.azora.top、用户名 aozora 时,启动代理:

cloudflared access tcp --hostname ssh2.azora.top --url 127.0.0.1:2222

客户端填写主机 127.0.0.1、端口 2222、用户名 aozora,选择服务器上已授权公钥对应的私钥。

命令行连接:

ssh -p 2222 [email protected]

如果这台电脑上已经运行了之前配置的本地代理,可以直接连接,不要重复启动另一个相同端口的代理。

  • 牛

  • 不错呀,很详细

  • IdoqOpKTeCHbhmMWeOEMKqXfRJnlFqJT.webp

    这机器内存占用有点高啊
    XYYPXAxrvz5Nm7uhYd6V0l1MYY0oMxrB.webp

  • @kejilion #3
    这个问题我也注意到了,主要是因为虚拟化环境被回收了。

    估计是他想节省些成本吧。8G 应该是上限,你运行别的进程是可以把这个抢回来使用的

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72196位seeker

🎉欢迎新用户🎉