You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vscode-sshfs/README.md

3.5 KiB

SSH FS

This extension makes use of the new FileSystemProvider, added in version 1.23.0 of Visual Studio Code.

Usage

Add SSH FS configs to "sshfs.configs" in your User Settings:

{
  "sshfs.configs": [
    {
        // Both display name and what results in ssh://serverlogs/
        "name": "serverlogs",
        // Remote folder to use as root (default is /)
        "root": "/var/log",
        // Host to connect to (domain / IPv4 / IPv6)
        "host": "10.0.0.123",
        // Port to connect to (default is 22)
        "port": 22,
        // Username to login with
        "username": "root",

        // Path to ssh-agent's UNIX socket
        // or 'pageant' when using Pageant on Windows
        "agent": "pageant"
        
        // Instead of using an agent, we can also just use a password
        "password": "CorrectHorseBatteryStaple"
        
        // Or a private key (raw key, OpenSSH format)
        "privateKey": "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnN...",
        // Should the private key be encrypted
        "passphrase": "CorrectHorseBatteryStaple"
    }
  ],
}

You could also put them in Workspace settings, it merges instead of overrides

The name has to be a certain format, creating a new configuration using the Command Pallet (or rightclicking the SSH File Systems view) is recommended. Think of the name as an internet domain name, and you'll be more than fine.

Either rightclick to Connect or use the command panel

Using the Command Panel

This will add a Workspace folder linked to a SSH (SFTP) session:

Workspace folder added

TO DO (in order of most likely to implement first)

  • Fix bug where the Explorer shows a loading bar forever
  • Fix bug where VSCode shows an error message about no provider for ssh://NAME/
  • An icon for the extension
  • Configuring a deleted (but active) configuration should show the old config
    • Currently it'll open a new default configuration file for it
  • Better error handling
    • Everything seems fine, but I haven't tested (a lot of) error situations
    • Handles wrong password/key/... properly
    • Doesn't report when root is set to a non-existant directory
    • Doesn't (always?) report errors related to lacking permissions
  • Offer reconnecting if the User Settings change
    • Currently this only refreshes the SSH File Systems view
    • We do offer this when it's changed using Configure in the context menu
  • Icons for the SSH File Systems view
    • Icon for a configuration that isn't active
    • Icon for a configuration that's active and connected
    • Icon for a configuration that's active but disconnected
    • Variant for the above two for deleted configurations
  • Better authentication methods
    • Currently (basically) everything is directly passed to ssh2
    • Add promptForPasswordOrPassphrase (self-explanatory)
    • Add privateKeyPath (or auto-detect privateKey as a path)
    • Prompt the user for a passworf if the server prompts
      • This would be the tryKeyboard option for ssh2's Client.connect
      • Would need to hook into the keyboard request and show a prompt
  • Add an option to open a SSH terminal (might as well)
  • Add an option to change the root folder (without reconnecting)
    • Internally keep track of the original root folder (reset option)
    • Allow to "move" the root folder up one directory or to /
    • Add a context menu option for directories in the Explorer