.github | ||
sshubl | ||
tests | ||
_logging.py | ||
.gitattributes | ||
.gitignore | ||
.python-version | ||
CHANGELOG.md | ||
Default.sublime-commands | ||
dependencies.json | ||
LICENSE | ||
main.py | ||
Main.sublime-menu | ||
pyproject.toml | ||
README.md | ||
requirements-dev.txt | ||
SSHubl.sublime-settings |
SSHubl
A Sublime Text 4+ plugin for your SSH connections
Introduction
This plugin aims to grant the power of (Open)SSH to Sublime Text. Included features are :
- Open a remote terminal
- Open a remote folder over sshfs
- Open forward and reverse ports (or UNIX domain sockets)
- Automatic environment re-setup on project opening
It has been inspired by Visual Studio Code Remote - SSH plugin, without the drawback of depending on a remote agent running on the SSH server.
Dependencies
- Sublime Text 4081+
- OpenSSH client
- sshfs (FUSE) client
- pexpect (Python package)
- Terminus (Sublime Text package, for remote terminal feature)
On Debian : apt-get install -y sshfs
Installation
With Package Control (recommended)
- Open your command palette and type in :
Package Control: Install Package
- Browse the list or search for
SSHubl
- Press
Enter
and you're done !
Package Control dedicated page here.
Manually
- Go to the Sublime Text packages folder (usually
$HOME/.config/sublime-text/Packages/
or%AppData%\Sublime Text\Packages\
) - Clone this repository there :
git clone https://github.com/HorlogeSkynet/SSHubl.git
- Satisfy
pexpect
andptyprocess
third-party dependencies in Sublime TextLib/python38/
folder (see here for further information) - Restart Sublime Text and... 🎉
Usage
Open your command palette and type in SSHubl
to select Connect to server
. Once connected, you will be able to select Forward port/socket
, Open/Select directory (mount sshfs)
or even Open a terminal
commands.
Settings
{
"debug": false,
// Custom path to OpenSSH client program
// /!\ This setting requires plugin reload (or Sublime restart)
"ssh_path": null,
// Custom path to `sshfs` FUSE client program
// /!\ This setting requires plugin reload (or Sublime restart)
"sshfs_path": null,
// Custom path to `umount` program (`fusermount` on Linux)
// /!\ This setting requires plugin reload (or Sublime restart)
"umount_path": null,
// Custom options to pass to OpenSSH **master** (e.g. useful for bastion traversal)
"ssh_options": {
//"ConnectTimeout": 30,
},
// Custom login timeout (for pexpect)
"ssh_login_timeout": 10,
// Set to `false` to disable host authentication for loopback addresses (cf. NoHostAuthenticationForLocalhost)
"ssh_host_authentication_for_localhost": true,
// Server keepalive interval (as recommended in sshfs documentation)
"ssh_server_alive_interval": 15,
}
Frequently Asked Questions
Why can I connect to new hosts without accepting their fingerprint ?
pexpect
package is known to always accept remotes' public key, and it isn't configurable.
How is "SSHubl" pronounced ?
[ʃʌbəl]
Why haven't you opted for a pure Python approach ?
Paramiko doesn't support FUSE. There is also
fs.sshfs
, but it relies on PyFilesystem 2 which doesn't support "re-exposing" FUSE as local mount point.
Is SSHubl compatible with other SSH clients ?
As it uses OpenSSH connections multiplexing feature, no.
Do you plan to support Sublime Text 3 ?
It's very unlikely as SSHubl requires Python 3.8 runtime and depends on several Sublime Text 4081+ API.