在 Linux 上通过 Cloudflare Tunnel 使用 SSH 登录,本质上是把 Cloudflare 提供的“加密隧道” 和 传统的“SSH 密钥认证” 结合起来。
启动命令
docker run -d \
--name ubuntu-tunnel \
-e CLOUDFLARE_TUNNEL_TOKEN="your_cloudflare_tunnel_token_here" \
sjwayrhz/ubuntu:tunnel-v0.2
以下是完整的操作步骤总结:
确保你的本地 Linux 电脑已经安装了 cloudflared。
# 下载并安装(以 amd64 为例)
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i cloudflared.deb
编辑你本地的 SSH 配置文件(如果文件不存在就直接创建):
vim ~/.ssh/config
在文件中添加以下内容:
Host my-tunnel
HostName your-domain.com
User root
IdentityFile ~/.ssh/id_ed25519
ProxyCommand /usr/bin/cloudflared access ssh --hostname %h
ServerAliveInterval 60
ServerAliveCountMax 3
注意: 把
your-domain.com换成你的域名,id_ed25519换成你真实的私钥文件名。
SSH 对私钥权限要求非常严格,如果权限太高会报错无法连接:
chmod 600 ~/.ssh/id_ed25519
现在,你不再需要输入复杂的命令,直接输入:
ssh my-tunnel
ssh my-tunnel 时,终端可能会显示一个 URL,要求你在浏览器中打开并登录 Cloudflare 账号进行授权。cloudflared 插件会根据配置自动接管连接,把流量打入 Cloudflare 网络。IdentityFile 里指定的密钥进行服务器端验证。/root/.ssh/authorized_keys 文件里必须已经存好了对应的公钥,否则会提示 Permission denied。cloudflared 的安装路径,运行 which cloudflared 查看。如果结果是 /usr/local/bin/cloudflared,记得在 config 文件里修改对应的路径。Content type
Image
Digest
sha256:c21201445…
Size
658.7 MB
Last updated
10 days ago
docker pull sjwayrhz/ubuntu:tunnel-sshd