USBoverSSH is a unified USB device sharing and tunneling toolkit built entirely in Rust. It provides a comprehensive TUI workspace alongside a powerful CLI, enabling users to perform USB device enumeration, secure SSH tunneling, USB/IP protocol implementation, and device attachment from a single modular framework.
The platform integrates advanced capabilities including cross-platform USB device enumeration (Linux sysfs, macOS/Windows via nusb), SSH tunneling with russh, USB/IP server implementation (Linux), device filtering by multiple criteria, persistent connections with auto-reconnect, daemon mode for background operation, and kernel module management. USBoverSSH supports modern USB ecosystems across Linux (full server + client), macOS (client only), and Windows (client only).
With comprehensive device filtering (bus ID, VID:PID, serial, product name, device class), multi-host configuration management, VHCI attachment/detachment (Linux), and an interactive TUI with tabbed interface, USBoverSSH enables users to securely share and access USB devices across machines within one unified environment.
Connect your devices and begin advanced USB over SSH tunneling and management.
usboverssh# List local USB devices
usboverssh list- TUI is the main product and default experience. Use
usboversshfor day-to-day device management, host connections, and operator-guided operations. - CLI is the secondary surface. Use
usboverssh list,attach,detach, and other commands for quick one-off tasks, automation.
| Action | Keys |
|---|---|
| Quit | q or Esc |
| Navigate panes | Tab / Shift+Tab |
| Navigate items | Arrow keys or j/k |
| Select/Activate | Enter |
| Attach device | a |
| Detach device | d |
| Refresh devices | r or F5 |
| Connect to host | c |
| Show hosts panel | h |
| Toggle status panel | s |
| Help | ? or F1 |
- β List local USB devices (all, with class filtering)
- β List remote USB devices via SSH
- β Device information retrieval (bus ID, VID:PID, class, speed, manufacturer, product, serial)
- β Attach remote USB devices (by VID:PID, product name, bus ID)
- β Detach attached devices (specific or all)
- β Show currently attached devices (VHCI status)
- β Device filtering by multiple criteria
- β Persistent mode with auto-reconnect
- β Daemon mode for background operation
- β Start USB/IP server (Linux only)
- β TCP and Unix socket listeners
- β Device export with filtering
- β Export all devices option
- β Device list request handling
- β Import (attach) request handling
- β Kernel module auto-loading (Linux)
- β SSH connection establishment
- β Key-based authentication
- β Remote command execution
- β Unix socket forwarding
- β Connection state management
- β Keep-alive support
- β Server host key verification
- β TOML-based configuration
- β Named host configurations
- β SSH settings (identity file, config file, agent forwarding)
- β General settings (reconnect delay, timeout, verbosity)
- β Logging settings (level, format, file, color)
- β TUI settings (refresh interval, mouse, theme, show serial/speed)
- β Auto-attach rules with device filters
- β Configuration init, show, path, add-host commands
- β Linux: Full support (server + client) with kernel modules
- β macOS: Client only (device enumeration via nusb)
- β Windows: Client only (device enumeration via nusb)
- β Kernel module checking and loading (Linux)
- β VHCI port management (Linux)
- β Device binding/unbinding (Linux)
- β Tabbed interface (Local Devices, Remote Devices, Attached, Hosts)
- β Device lists with status indicators
- β Host connection management
- β Attach/detach operations
- β Help popup
- β Connect dialog
- β Status bar with keybinding hints
- β Auto-refresh
- β Mouse support
- OS: macOS, Linux, Windows
- Linux Server: Kernel with USB/IP support (usbip-core, usbip-host modules)
- Linux Client: Kernel with VHCI support (vhci-hcd module)
- macOS/Windows: No special requirements (client only)
- SSH
- USB device enumeration via sysfs
- USB/IP server functionality
- VHCI client attachment
- Kernel module management (usbip-host, vhci-hcd)
- Device binding/unbinding
- All features supported
- USB device enumeration via nusb
- SSH tunneling and remote device listing
- USB/IP client functionality (userspace)
- No server functionality
- USB device enumeration via nusb
- SSH tunneling and remote device listing
- USB/IP client functionality (userspace)
- No server functionality
USB device classes recognized and filtered:
- Audio, Communication (COM), HID, Physical, Image, Printer, Mass Storage, Hub
- CDC Data, SmartCard, Content Security, Video, Personal Healthcare, Audio/Video
- Billboard, USB Type-C Bridge, Diagnostic, Wireless Controller
- Miscellaneous, Application Specific, Vendor Specific
USBoverSSH: The Ultimate USB over SSH Solution is developed for USB device sharing and tunneling purposes. It should be used responsibly and in compliance with all applicable laws and regulations. The developer of this tool is not responsible for any misuse or illegal activities conducted with this tool.
USB device sharing should only be performed with proper authorization and understanding of the implications. Accessing remote USB devices may affect system functionality and security. Always ensure proper authorization before using USBoverSSH for device sharing. Always adhere to ethical practices and comply with all applicable laws and regulations.
This project is licensed under the GPL-3.0-only License.