Skip to content

HorlogeSkynet/SSHubl

Repository files navigation

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)

  1. Open your command palette and type in : Package Control: Install Package
  2. Browse the list or search for SSHubl
  3. Press Enter and you're done !

Package Control dedicated page here.

Manually

  1. Go to the Sublime Text packages folder (usually $HOME/.config/sublime-text/Packages/ or %AppData%\Sublime Text\Packages\)
  2. Clone this repository there : git clone https://github.com/HorlogeSkynet/SSHubl.git
  3. Satisfy pexpect and ptyprocess third-party dependencies in Sublime Text Lib/python38/ folder (see here for further information)
  4. 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.

Preview

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.