:technologist: A Sublime Text 4+ plugin for your SSH connections
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 sockets)
- Automatic environment re-setup on project opening
It has been inspired by Visual Studio Code’s Remote - SSH plugin, without the inconvenient 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 #
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… :tada:
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.