/sftpman

Application that handles sshfs/sftp file systems mounting.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

SftpMan with the GTK frontend

https://github.com/spantaleev/sftpman-gtk/raw/master/sftpman-gui.png


SftpMan consists of a Command Line and a GTK application (packaged separately) that make it simpler to setup and mount SSHFS/SFTP file systems.

The idea was to develop a simple CLI/GUI application for Linux that can be used to manage SFTP systems.

It relies on sshfs to do all the mounting work. SftpMan allows you to setup many remote filesystems and helps you easily mount/unmount them.

Every system managed by SftpMan is identified by an id such as my-machine, which is used in file paths and when managing the system.

Configuration data is stored in ~/.config/sftpman/ as JSON files.

All systems are mounted under /mnt/sshfs/. For the my-machine machine, that would be /mnt/sshfs/my-machine.


Installing on ArchLinux

On ArchLinux, there's an official sftpman AUR package. To install using yaourt:

yaourt -S sftpman

The package takes care of all dependencies and SftpMan should be able to start.

Optional dependencies will be suggested to you upon install.

Installing on other distributions

For other distributions you can install using pip:

pip install sftpman

You also need to install sshfs yourself.

CLI Application

The CLI application (sftpman executable) supports the following commands:

help:
 - Displays this help menu.

ls:
 - Lists the available/mounted/unmounted sftp systems.
        Usage: sftpman ls {what}
        Where {what} is one of: available, mounted, unmounted

mount:
 - Mounts the specified sftp system, unless it's already mounted.
        Usage: sftpman mount {id}..

mount_all:
 - Mounts all sftp file systems known to sftpman.
        Usage: sftpman mount_all

preflight_check:
 - Detects whether we have everything needed to mount sshfs filesystems.

rm:
 - Removes a system by id.
        Usage: sftpman rm {system_id}..
        For a list of system ids, see `sftpman ls available`.

setup:
 - Defines a new sftp file system configuration or edits an old one with the same id.
        Usage: sftpman setup {options}
        Available {options}:
            --id={unique system identifier}
                You use this to recognize and manage this sftp system.
                It determines what the local mount point is.
                If `--id=example`, the filesystem will be mounted to: `/mnt/sshfs/example`
            --host={host to connect to}
            --port={port to connect to} [default: 22]
            --user={username to authenticate with} [default: current user]
            --mount_opt={option to pass to sshfs} [optional] [can be passed more than once]
                Example: --mount_opt="follow_symlinks" --mount_opt="workaround=rename"
                `sshfs --help` tells you what sshfs options are available
            --mount_point={remote path to mount}
            --auth_method={method}
                Specifies the authentication method.
                Can be `password` or `publickey`. [default: publickey]
            --ssh_key={path to the ssh key to use for authentication}
                Only applies if auth_method is `publickey`.
            --cmd_before_mount={command to run before mounting} [default: /bin/true]
                Allows you to run a custom command every time this system is mounted.

umount:
 - Unmounts the specified sftp system.
        Usage: sftpman umount {id}..

umount_all:
 - Unmounts all sftp file systems known to sftpman.
        Usage: sftpman umount_all

GUI Application

sftpman-gtk is a GTK frontend for sftpman, which is packaged separately. Installing the frontend automatically installs the CLI application as a dependency.

Dependencies

Known limitations

  • Doesn't support mounting in a location different than /mnt/sshfs/