如何通过SSH使用本地Matlab连接远程服务器并处理数据?
用本地Matlab连接远程主机并运行脚本/处理远程数据
场景1:本地Matlab直接运行远程服务器上的脚本
可以通过两种方式实现,核心是让本地Matlab能访问远程文件,同时用本地许可执行计算:
- 方法一:挂载远程SSH文件系统到本地
借助系统工具把远程服务器的目录映射成本地磁盘:- Linux/macOS用
sshfs,示例命令:sshfs username@remote_host:/path/to/remote/folder /local/mount/point - Windows需先安装WinFsp和SSHFS-Win,再通过图形界面或命令行挂载。
挂载完成后,本地Matlab的文件浏览器会识别该分区,直接打开远程脚本运行即可——计算在本地执行,文件读写通过SSH传输到远程服务器。
- Linux/macOS用
- 方法二:Matlab内调用SSH命令同步脚本再运行
无需挂载,用Matlab的system()函数执行SSH同步命令,把远程脚本拉到本地临时目录运行,再把结果传回远程:% 同步远程脚本到本地 system('scp username@remote_host:/path/to/script.m ./temp/'); % 运行脚本 run('./temp/script.m'); % 传回结果文件到远程 system('scp ./result.mat username@remote_host:/path/to/remote/folder/');
场景2:本地运行脚本,直接处理远程服务器上的数据
同样有两种实用方案:
- 方法一:挂载文件系统后直接操作
挂载远程目录后,Matlab的常规文件操作函数可直接指向远程路径,比如:% 读取远程数据 data = load('/local/mount/point/data.mat'); % 处理数据 data.normalized = (data.raw - min(data.raw)) / (max(data.raw) - min(data.raw)); % 保存回远程服务器 save('/local/mount/point/normalized_data.mat', 'data'); - 方法二:通过SSH命令传输数据文件
用system()调用scp命令,先把远程数据下载到本地,处理后再上传:% 下载远程数据文件 system('scp username@remote_host:/path/to/raw_data.mat ./temp/'); % 加载并处理 raw_data = load('./temp/raw_data.mat'); processed_data = raw_data.values .* 1.5; % 保存并上传处理结果 save('./temp/processed_data.mat', 'processed_data'); system('scp ./temp/processed_data.mat username@remote_host:/path/to/remote/folder/');
注意事项
- 确保本地与远程服务器网络稳定,大文件传输会耗时较久
- 建议设置SSH密钥登录,避免重复输入密码
- Windows用户需额外安装SSHFS相关工具,Linux/macOS通常自带基础SSH组件
内容的提问来源于stack exchange,提问作者Chamran Ashour
相关产品推荐
相关产品推荐

