You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SSH在多设备间实现:Mac编写代码、GPU机运行、跨机访问图片文件?

跨设备开发与计算最优方案

针对你的场景(Mac A写代码 → GPU机器B运行 → 访问存储机器C的图像),以下是经过验证的高效稳定方案,适配频繁跨设备操作需求:

1. 开发终端(A)与计算节点(B)的打通

免密SSH连接(必备)

频繁操作首先要解决重复输密码的问题:

  • 在A上生成SSH密钥(一路回车默认配置即可):
    ssh-keygen -t rsa
    
  • 将公钥同步到B:
    ssh-copy-id your-username@B-IP
    
    之后直接ssh your-username@B-IP就能无密码登录。

代码编写与远程运行(二选一,推荐VS Code)

方案A:VS Code Remote-SSH(最便捷的开发体验)

  • 在A的VS Code中安装「Remote - SSH」插件,通过插件连接到B后,可直接在VS Code中编辑B上的代码文件,终端也直接映射到B的环境。
  • 运行Python脚本:直接在VS Code的远程终端中激活B的GPU环境,执行脚本即可,实时输出同步到A的终端。
  • 远程Jupyter:在B的终端启动Jupyter时指定端口:
    jupyter notebook --no-browser --port=8888
    
    然后在A的VS Code中打开「Jupyter」插件,选择远程B的kernel,即可在本地编辑并运行B上的Notebook。

方案B:纯SSH端口转发+本地浏览器访问

  • 在A上执行端口转发命令,将B的8888端口映射到A的本地端口:
    ssh -L 8888:localhost:8888 your-username@B-IP
    
  • 在B上启动Jupyter后,A的浏览器访问localhost:8888即可使用B的Jupyter环境,代码可通过scp或Git同步到B,适合习惯纯浏览器操作的场景。

2. 计算节点(B)访问存储节点(C)的图像文件

SSHFS挂载(推荐,依赖SSH无需额外服务)

将C的图像目录挂载到B的本地文件系统,让Python代码像访问本地文件一样调用图像:

  • 在B上安装sshfs(以Ubuntu为例):
    sudo apt install sshfs
    
  • 创建挂载目录:
    mkdir -p /mnt/C-images
    
  • 挂载C的图像目录(需先完成B到C的免密登录,步骤同1.1):
    sshfs your-username@C-IP:/path/to/your/images /mnt/C-images
    
  • 开机自动挂载:编辑B的/etc/fstab文件,添加一行:
    your-username@C-IP:/path/to/your/images /mnt/C-images fuse.sshfs defaults,allow_other,_netdev 0 0
    
    之后B重启会自动挂载C的目录,无需手动操作。

备选:NFS共享(适合局域网内高吞吐场景)

如果B和C在同一个局域网,且需要极高的文件访问速度,可配置NFS服务:

  • 在C上安装NFS服务器,共享图像目录;
  • 在B上挂载NFS共享目录,具体配置可根据操作系统调整,但需要额外的服务配置,不如SSHFS灵活。

3. 多GPU环境优化(B端)

  • 用Conda隔离GPU环境,避免依赖冲突:
    conda create -n gpu-workspace python=3.10 cudatoolkit=11.8
    conda activate gpu-workspace
    
  • 为Jupyter添加GPU环境的kernel:
    conda install ipykernel
    python -m ipykernel install --user --name=gpu-workspace
    
    之后在Jupyter中就能选择该kernel调用GPU资源。
  • 运行多GPU脚本时,可通过CUDA_VISIBLE_DEVICES环境变量指定使用的GPU,比如:
    CUDA_VISIBLE_DEVICES=0,1 python train.py
    

4. 频繁操作的便捷化配置

SSH简化配置

在A的~/.ssh/config文件中添加以下内容,以后用别名连接B/C:

Host machineB
    HostName B-IP
    User your-username
    IdentityFile ~/.ssh/id_rsa

Host machineC
    HostName C-IP
    User your-username
    IdentityFile ~/.ssh/id_rsa

之后连接B只需ssh machineB,挂载C只需sshfs machineC:/path/to/images /mnt/C-images。

命令别名

在A的~/.zshrc(或~/.bashrc,根据你的Shell)中添加别名,一键执行常用操作:

# 连接B并转发Jupyter端口
alias connectB='ssh -L 8888:localhost:8888 machineB'
# 远程执行B挂载C的操作
alias mountC='ssh machineB "sshfs machineC:/path/to/images /mnt/C-images"'

保存后执行source ~/.zshrc生效,以后直接输入connectB或mountC即可完成操作。


内容的提问来源于stack exchange,提问作者Ningza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:48:22