在 Mac 上通过 Commander One Pro 挂载 SFTP 服务器,并实现终端直接打开远程路径
本人需要频繁在远程服务器提交任务和处理数据,图形化界面操作一直是我首选的工作方式。在 Ubuntu 系统中,我习惯通过文件管理器直接挂载 SFTP 服务器,并利用「在远程打开终端」的功能快速进入工作目录。然而,当近期换用 Mac 后,我需要寻找一种替代方案来延续这一高效的工作流。
Commander One Pro 的实践
在 Mac 生态中, Commander One Pro 和 RemoteDrive 两款付费工具可以实现上述流程。以下是以前者为例的使用流程
步骤详解:挂载 SFTP 到 Finder
安装 Commander One Pro
创建 SFTP 连接
-
点击右上角 “连接” 按钮:
-
选择 FTP 协议:
-
填写配置:
- 用户名:需以 username@hostname 格式填写(如 devuser@192.168.1.100)
- 类型:选择SFTP
- 服务器:服务器的IP
- 登陆和密码:个人在服务上的用户名于密码
-
点击 连接,即可在 Finder 的 .COVolumes 目录中看到挂载的远程文件。
Finder中显示远程文件夹
-
需要在Commander One Pro的界面上直接双击打开一个文件
-
然后就能在Finder上的用户家目录(本人是/Users/yuanqilu)下的.COVolumes文件夹内找到远程的目录了
关键优化:终端直接进入远程路径
尽管 Finder 可视化操作便捷,但开发者常需在终端执行命令。Mac 的 Finder 默认右键「在终端中打开」功能仅能进入本地挂载点路径(如 /Users/yourname/.COVolumes/username@hostname),而非真正的远程服务器路径。
ps:(option+command+P)可打开路径显示
解决方案:Python 脚本自动化跳转
我编写了一个 Python 脚本 CdSftp.py,通过解析本地路径自动建立 SSH 连接并定位到远程对应目录:
import os
import sys
from subprocess import call
def getssh():
current_path = os.getcwd().split('/')
# 检查路径是否符合 .COVolumes 结构
if len(current_path) > 4 and current_path[3] == '.COVolumes':
# 解析用户名和主机名
user_host = current_path[4].split('@')
host = user_host[1]
user = user_host[0][1:] # 去除开头的 '.'(因路径格式为 .username@hostname)
# 拼接远程路径
remote_path = '/'.join(current_path[5:]) or '/'
print(remote_path)
# 执行 SSH 并跳转到目标路径
call(f'ssh -t {user}@{host} "cd /{remote_path}; exec bash –login"', shell=True)
if __name__ == "__main__":
getssh()
脚本说明:
-
路径解析逻辑:通过分割本地路径 .COVolumes/username@hostname/path/to/dir,提取主机信息并构造远程路径。
-
SSH 参数:-t 强制分配终端,exec bash –login 确保环境变量正确加载。
自动化集成:一键调用
将脚本路径添加到 ~/.zshrc(或 ~/.bashrc),创建别名实现快捷操作:
# 1. 将脚本保存到指定路径(如 ~/scripts/CdSftp.py)
# 2. 在终端执行:
echo 'alias sftp-cd="python ~/scripts/CdSftp.py"' >> ~/.zshrc
source ~/.zshrc
使用方式:
在 Finder 中右键点击目录 → 在终端中打开
输入 sftp-cd,即可直接进入远程对应路径!
使用体验与注意事项
路径一致性:确保本地挂载路径与远程目录结构完全一致,否则脚本可能无法正确跳转。
SSH 密钥配置:若使用密钥认证,需提前在 ~/.ssh/config 中配置服务器信息,避免每次输入密码。
性能优化:大文件传输建议直接使用 Commander One Pro 的传输功能,终端 SSH 更适合轻量操作。
总结
通过 Commander One Pro 的图形化挂载与自定义脚本的结合,我成功在 Mac 上复现了 Ubuntu 的 SFTP 工作流。这一方案不仅提升了跨平台开发的便利性,更通过代码自动化减少了手动操作的冗余。希望这篇指南能帮助同样需要 Mac SFTP 集成的开发者节省探索时间!
评论前必须登录!
注册