{"id":16642929,"url":"https://github.com/horlogeskynet/sshubl","last_synced_at":"2025-03-23T14:31:24.891Z","repository":{"id":247137222,"uuid":"825099829","full_name":"HorlogeSkynet/SSHubl","owner":"HorlogeSkynet","description":":technologist: A Sublime Text 4+ plugin for your SSH connections","archived":false,"fork":false,"pushed_at":"2025-01-13T20:43:20.000Z","size":108,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-18T21:12:58.813Z","etag":null,"topics":["openssh","package-control","port-forwarding","remote-ssh","ssh","sshfs","sublime-text","sublime-text-4","sublime-text-plugin"],"latest_commit_sha":null,"homepage":"https://packagecontrol.io/packages/SSHubl","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HorlogeSkynet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"liberapay":"HorlogeSkynet"}},"created_at":"2024-07-06T19:15:18.000Z","updated_at":"2025-01-13T20:43:23.000Z","dependencies_parsed_at":"2024-11-04T22:26:56.671Z","dependency_job_id":"01408afb-cd56-449b-a9c2-e38d8b40eaec","html_url":"https://github.com/HorlogeSkynet/SSHubl","commit_stats":null,"previous_names":["horlogeskynet/sshubl"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HorlogeSkynet%2FSSHubl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HorlogeSkynet%2FSSHubl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HorlogeSkynet%2FSSHubl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HorlogeSkynet%2FSSHubl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HorlogeSkynet","download_url":"https://codeload.github.com/HorlogeSkynet/SSHubl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245115828,"owners_count":20563245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openssh","package-control","port-forwarding","remote-ssh","ssh","sshfs","sublime-text","sublime-text-4","sublime-text-plugin"],"created_at":"2024-10-12T08:06:50.533Z","updated_at":"2025-03-23T14:31:24.851Z","avatar_url":"https://github.com/HorlogeSkynet.png","language":"Python","funding_links":["https://liberapay.com/HorlogeSkynet"],"categories":[],"sub_categories":[],"readme":"# SSHubl\n\n\u003e A Sublime Text 4+ plugin for your SSH connections\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://packagecontrol.io/packages/SSHubl\"\u003e\u003cimg src=\"https://img.shields.io/packagecontrol/dm/SSHubl?style=for-the-badge\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Introduction\n\nThis plugin aims to grant the power of (Open)SSH to Sublime Text. Included features are :\n\n* Open a remote terminal\n* Open a remote folder over sshfs\n* Open forward and reverse ports (or UNIX domain sockets)\n* Automatic environment re-setup on [project](https://www.sublimetext.com/docs/projects.html) opening\n\nIt has been inspired by Visual Studio Code [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) plugin, **without** the drawback of depending on a remote agent running on the SSH server.\n\n## Dependencies\n\n* Sublime Text 4081+\n* OpenSSH client\n* sshfs (FUSE) client\n* pexpect Python package (used for non-interactive SSH connection on Linux/macOS)\n* [Terminus](https://packagecontrol.io/packages/Terminus) Sublime Text package (used for remote terminal feature on Linux/macOS, **required** on Windows)\n\nOn Debian : `apt-get install -y sshfs`\n\n## Installation\n\n\n### With Package Control (recommended)\n\n1. Open your command palette and type in : `Package Control: Install Package`\n2. Browse the list or search for `SSHubl`\n3. Press `Enter` and you're done !\n\nPackage Control dedicated page [here](https://packagecontrol.io/packages/SSHubl).\n\n\n### Manually\n\n1. Go to the Sublime Text packages folder (usually `$HOME/.config/sublime-text/Packages/` or `%AppData%\\Sublime Text\\Packages\\`)\n2. Clone this repository there : `git clone https://github.com/HorlogeSkynet/SSHubl.git`\n3. \\[Linux/macOS\\] Satisfy either `pexpect` and `ptyprocess` third-party dependencies in Sublime Text `Lib/python38/` folder (see [here](https://stackoverflow.com/a/61200528) for further information) or [Terminus](https://packagecontrol.io/packages/Terminus) Sublime Text package dependency\n4. \\[Windows\\] Satisfy [Terminus](https://packagecontrol.io/packages/Terminus) Sublime Text package dependency\n5. Restart Sublime Text and... :tada:\n\n## Usage\n\nOpen 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.\n\n![Preview](https://i.imgur.com/i5uPoWD.gif)\n\n## Settings\n\n```javascript\n{\n\t\"debug\": false,\n\t// Custom path to OpenSSH client program\n\t// /!\\ This setting requires plugin reload (or Sublime restart)\n\t\"ssh_path\": null,\n\t// Custom path to `sshfs` FUSE client program\n\t// /!\\ This setting requires plugin reload (or Sublime restart)\n\t\"sshfs_path\": null,\n\t// Custom path to `umount` program (`fusermount` on Linux)\n\t// /!\\ This setting requires plugin reload (or Sublime restart)\n\t\"umount_path\": null,\n\t// Custom options to pass to OpenSSH **master** (e.g. useful for bastion traversal)\n\t\"ssh_options\": {\n\t\t//\"ConnectTimeout\": 30,\n\t},\n\t// Custom login timeout (for pexpect)\n\t\"ssh_login_timeout\": 10,\n\t// Set to `false` to disable host authentication for loopback addresses (cf. NoHostAuthenticationForLocalhost)\n\t\"ssh_host_authentication_for_localhost\": true,\n\t// Server keepalive interval (as recommended in sshfs documentation)\n\t\"ssh_server_alive_interval\": 15,\n}\n```\n\n## Frequently Asked Questions\n\n### Why can I non-interactively connect to new hosts without accepting their fingerprint ?\n\n\u003e `pexpect` package is [known to always accept remotes' public key](https://github.com/pexpect/pexpect/blob/4.9/pexpect/pxssh.py#L411-L414), and it isn't configurable.\n\n### How is \"SSHubl\" pronounced ?\n\n\u003e \\[ʃʌbəl\\]\n\n### Why haven't you opted for a pure Python approach ?\n\n\u003e 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.\n\n### Is SSHubl compatible with other SSH clients ?\n\n\u003e As it uses OpenSSH connections multiplexing feature, no.\n\n### Do you plan to support Sublime Text 3 ?\n\n\u003e It's very unlikely as SSHubl requires Python 3.8 runtime and depends on several Sublime Text 4081+ API.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhorlogeskynet%2Fsshubl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhorlogeskynet%2Fsshubl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhorlogeskynet%2Fsshubl/lists"}