如何通过SSH连接Google Colaboratory VM?是否有更直接的实现方式?
嘿,这个问题我刚好折腾过好几次,给你捋清楚两种靠谱的方法,包括比手动搭隧道更省事的捷径:
一、常规SSH连接Google Colab VM的步骤
这是最通用的方法,依赖反向隧道工具(比如ngrok)来打通本地和Colab VM的连接:
- 在Colab Notebook里配置SSH服务
新建一个代码单元格,运行以下代码(记得替换your_password_here和YOUR_NGROK_AUTH_TOKEN):# 安装并配置SSH服务器 !apt-get install -y openssh-server !mkdir -p /var/run/sshd !echo 'root:your_password_here' | chpasswd # 设置root密码,后续SSH要用 !sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config !sed -i 's/Port 22/Port 2222/' /etc/ssh/sshd_config # 修改端口避免冲突 !service ssh start # 安装并配置ngrok(需要提前在ngrok官网注册获取auth token) !wget -q https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz !tar xzf ngrok-v3-stable-linux-amd64.tgz !./ngrok config add-authtoken YOUR_NGROK_AUTH_TOKEN !./ngrok tcp 2222 & # 启动TCP隧道转发2222端口 - 获取SSH连接地址
再新建一个单元格,运行以下代码获取ngrok的转发地址:
输出会是类似!curl -s http://localhost:4040/api/tunnels | python3 -c "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"tcp://0.tcp.ngrok.io:12345的格式,提取其中的域名(0.tcp.ngrok.io)和端口(12345)。 - 本地终端发起SSH连接
在本地的终端(Windows用PowerShell或cmd,Mac/Linux用终端)运行:
输入你之前设置的密码,就能成功连接到Colab的VM了。ssh root@0.tcp.ngrok.io -p 12345
二、更直接的实现方法——无需手动配置隧道(Cloudflare Tunnel一键版)
如果你觉得ngrok需要注册token太麻烦,可以用Cloudflare的免费隧道工具,步骤更简洁,不需要提前注册:
- 在Colab里一键启动SSH和隧道
运行以下代码(直接用默认的colab用户,记得设置密码):!apt install -y openssh-server !echo 'colab:your_secure_password' | chpasswd # 设置colab用户的密码 !service ssh start # 安装并启动Cloudflare Tunnel !wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb !dpkg -i cloudflared-linux-amd64.deb !cloudflared tunnel --url ssh://localhost:22 - 直接复制连接命令
运行后会输出类似ssh colab://xyzabc.trycloudflare.com的地址,你只需要在本地终端运行:
输入设置的密码就能直接连接,省去了手动提取端口和域名的步骤。ssh colab@xyzabc.trycloudflare.com
注意事项
- Colab的VM是临时的,最长运行12小时左右就会被销毁,每次重新连接都需要重新执行上述步骤;
- 不要在Colab VM里存储重要数据,销毁后所有数据都会丢失;
- 确保设置的密码足够安全,避免被他人恶意访问。
内容的提问来源于stack exchange,提问作者Rastislav Rabatin
相关产品推荐
相关产品推荐

