我-amdroid / sshfs挂载工具
用于管理并挂载SSH连接作为文件系统卷的命令行界面工具。
Requires
- php: >=8.1.0
- symfony/console: ^6.3
- symfony/event-dispatcher: ^6.3
- symfony/process: ^6.3
- symfony/yaml: ^6.3
README
SSHFS挂载工具(SMT)—— 用于管理并挂载SSH连接作为文件系统卷的命令行工具。
SMT是在SSHFS的基础上构建的,但设计时考虑了减少输入。
要求
- Linux/macOS
- PHP CLI >= 8.1.0
- SSHFS
安装
安装SSHFS
Ubuntu
sudo apt install sshfs
macOS (osxfuse.github.io)
brew install sshfs
安装SSHFS挂载工具
选项1:使用Composer安装
composer global require i-amdroid/sshfs-mount-tool
请确保Composer的bin目录存在于您的PATH中。根据您的操作系统,Composer的bin目录可能是$HOME/.composer/vendor/bin或$HOME/.config/composer/vendor/bin(阅读更多)。根据您的shell,可以在~/.bash_profile、~/.bashrc、~/.zshrc等文件中设置。
如果Composer的bin目录不在PATH中,可以按照以下方式添加:
export PATH="$PATH:$HOME/.composer/vendor/bin"
或者
export PATH="$PATH:$HOME/.config/composer/vendor/bin"
选项2:手动安装
从发布下载最新版本的phar文件。
chmod 755 smt.phar
sudo mv smt.phar /usr/local/bin/smt
用法
添加连接
smt add -v
连接属性
连接可以存储在~/.config/smt/stm.yml(全局)或当前目录下的stm.yml中。
在add命令期间不会提示ssh_options,因此需要手动将其添加到配置文件中。
配置文件示例
connections:
msrv:
title: myserver
server: server.com
port: null
user: iam
password: null
key: ~/.ssh/id_rsa
mount: ~/mnt/msrv
remote: /var/www
options:
- some_option
- SomeAnotherOption=yes
ssh_options:
- '-o SomeOption=100'
- '-f SomeFlag 200'
挂载连接
smt <connection id>
或直接
smt
它将显示已保存的连接以供选择,如果没有在配置文件中指定,将自动挂载。
卸载连接
smt um <connection id>
或者
smt um
所有命令
smt (mount) [<连接ID>, -p <密码>] — 挂载连接
smt unmount (um) [<连接ID>] — 卸载连接
smt add — 添加连接
smt remove (rm) [<连接ID>] — 删除连接
smt list (ls) [<连接ID>] — 列出连接属性
smt status (st) — 显示连接状态
smt config (cfg) — 打开配置文件
smt help (-h) [<命令>] — 显示帮助
smt --version (-V) — 显示版本
smt info (--info, -i) — 显示依赖信息
smt completion [<shell>] — 输出shell完成脚本
受限制的支持命令
smt cd [<连接ID>] — 切换到连接挂载目录
smt ssh [<连接ID>] — 启动SSH会话
目前仅在默认的Ubuntu终端(gnome-terminal)、默认的macOS终端(Terminal.app)和iTerm中支持。
使用密码认证启动SSH会话需要sshpass。
在Ubuntu上安装
sudo apt install sshpass
在macOS上安装
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
配置文件
全局配置文件~/.config/smt/stm.yml,用于存储多个常用连接。
当前目录下的配置文件stm.yml,用于存储项目文件夹中的项目连接。如果配置文件中只有一个连接,则将自动使用它作为命令的<连接ID>参数。例如
smt — 挂载连接
smt um — 卸载连接
如果SMT是从包含stm.yml文件的文件夹中运行的,则将使用该文件作为配置文件。否则,将使用全局配置文件。要从包含stm.yml文件的文件夹使用全局配置文件,请使用全局选项(-g, --global)。
自v2.1版本起,SMT支持用户在~/.config/smt/config.yml文件中设置个人偏好。偏好设置允许用户自定义SSHFS命令、默认选项、添加新的终端、选择编辑器、设置默认挂载文件夹、默认全局选项状态。
开发
SMT最初是用纯PHP编写的。
V2版本已完全重写,使用Symfony Console组件。
V3版本已升级到使用Symfony 6.2。
V4版本已升级到使用Symfony 6.3。
欢迎任何形式的贡献。
未来计划
- 添加测试
- 美化info命令
- 使用Homebrew进行安装
构建
- 克隆项目
- 通过Composer获取依赖
composer install
- 通过Box运行构建过程
box compile