SSHMount Driver¶
jumpstarter-driver-ssh-mount provides remote filesystem mounting via sshfs. It allows you to mount remote directories from a target device to your local machine using SSHFS (SSH Filesystem).
Installation¶
pip3 install --extra-index-url https://pkg.jumpstarter.dev/simple/ jumpstarter-driver-ssh-mount
You also need sshfs installed on the client machine:
Fedora/RHEL:
sudo dnf install fuse-sshfsDebian/Ubuntu:
sudo apt-get install sshfsmacOS: Install macFUSE and SSHFS from https://macfuse.github.io/, please note that it needs special handling to enable the macOS kernel extensions, read the install documentation carefully.
Configuration¶
The SSHMount driver references an existing SSH driver to inherit credentials (username, identity key) and TCP connectivity. No duplicate configuration is needed.
Example exporter configuration:
export:
ssh:
type: jumpstarter_driver_ssh.driver.SSHWrapper
config:
default_username: "root"
# ssh_identity_file: "/path/to/ssh/key"
children:
tcp:
type: jumpstarter_driver_network.driver.TcpNetwork
config:
host: "192.168.1.100"
port: 22
mount:
type: jumpstarter_driver_ssh_mount.driver.SSHMount
children:
ssh:
ref: "ssh"
CLI Usage¶
Inside a jmp shell session:
# Mount remote filesystem (spawns a subshell; type 'exit' to unmount)
j mount /local/mountpoint
j mount /local/mountpoint -r /remote/path
j mount /local/mountpoint --direct
# Mount in foreground mode (blocks until Ctrl+C)
j mount /local/mountpoint --foreground
# Pass extra sshfs options (-o forwards each value as an sshfs -o flag)
j mount /local/mountpoint -o reconnect -o cache=yes
# Override default SSH options (e.g., enable host key checking)
j mount /local/mountpoint -o StrictHostKeyChecking=yes
# Allow other users to access the mount (requires user_allow_other in /etc/fuse.conf)
j mount /local/mountpoint -o allow_other
# Unmount an orphaned mount
j mount --umount /local/mountpoint
j mount --umount /local/mountpoint --lazy
By default, j mount runs sshfs in foreground mode and spawns a subshell
with a modified prompt. The mount stays active while the subshell is running.
When you type exit (or press Ctrl+D), sshfs is terminated and all resources
(port forwards, temporary identity files) are cleaned up automatically.
Use --foreground to skip the subshell and block directly on sshfs. Press
Ctrl+C to unmount.
The --umount flag is available as a fallback for mounts that were orphaned
(e.g., if the process was killed without cleanup).
API Reference¶
SSHMountClient¶
mount(mountpoint, *, remote_path="/", direct=False, foreground=False, extra_args=None)- Mount remote filesystem locally via sshfsumount(mountpoint, *, lazy=False)- Unmount an sshfs filesystem (fallback for orphaned mounts)
Required Children¶
Child name |
Type |
Description |
|---|---|---|
|
|
SSH driver providing credentials (username, identity key) and TCP connectivity. Must itself have a |
CLI¶
The driver registers as mount in the exporter config. When used in a jmp shell session, the CLI is a single command with a --umount flag for unmounting.
Note: Each -o value is forwarded directly to sshfs as an -o option flag. You can
pass any option that sshfs (and by extension, the underlying SSH client) supports.
By default, the driver sets StrictHostKeyChecking=no, UserKnownHostsFile=/dev/null,
and LogLevel=ERROR. To override a default, pass the replacement via -o (e.g.,
-o StrictHostKeyChecking=yes). Common options include reconnect, cache=yes,
ServerAliveInterval=15, and compression=yes. If you need other users on the
system to access the mounted filesystem, pass -o allow_other (requires
user_allow_other in /etc/fuse.conf). If allow_other fails due to FUSE
configuration, the mount will automatically retry without it.