Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>SSH ControlNew to Visual Studio Code? Get it now.
SSH Control

SSH Control

Miguel Targa

|
1 install
| (0) | Free
Manage SSH connections directly from VSCode.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

SSH Control

Manage SSH connections from VSCode

screenshot

Features

  • Sidebar tree view with hierarchical server groups
  • Nested groups with inheritance - organize servers in unlimited hierarchy levels
  • Double-click to connect via SSH
  • Add/edit/delete servers and groups
  • Add child groups - create nested organization structure
  • JSON configuration file with inheritance support
  • Multiple sessions per server

Usage

  1. Click the server icon in the activity bar
  2. Add groups and servers using the toolbar buttons
  3. Add child groups using the folder icon button on any group
  4. Double-click a server to connect
  5. Use the gear icon to edit the config file directly

Working with Nested Groups

  • Add Child Group: Click the folder icon (📁) next to any group to create a nested group
  • Add Server: Click the plus icon (+) next to any group to add a server to that group
  • Inheritance: Child groups and servers automatically inherit SSH settings from parent groups
  • Override Settings: More specific settings always override inherited ones

Configuration

Creates ssh-config.json in your workspace or ~/.ssh-control/:

{
  "groups": [
    {
      "name": "Production",
      "user": "ubuntu",
      "port": 22,
      "keyPath": "~/.ssh/prod_key",
      "hosts": [
        {
          "name": "web-server",
          "hostName": "10.0.1.10"
        }
      ],
      "groups": [
        {
          "name": "Database",
          "port": 3306,
          "hosts": [
            {
              "name": "db-server",
              "hostName": "10.0.2.10",
              "user": "dbadmin"
            }
          ]
        }
      ]
    }
  ]
}

Remote Hosts

Groups can fetch server lists from remote URLs, enabling dynamic server discovery and centralized management.

{
  "name": "Database",
  "port": 3306,
  "remoteHosts": {
    "address": "https://api.example.com/servers.json?ts=[timestamp]",
    "basicAuth": {
      "username": "api_user", 
      "password": "api_password"
    }
  },
  "hosts": [
    // Local hosts are merged with remote hosts/groups
  ]
}

Timestamp Placeholder: The [timestamp] placeholder in URLs gets replaced with the current timestamp (milliseconds since epoch) when the request is made. This is useful for bypassing server-side caching:

https://api.example.com/servers.json?ts=[timestamp]
↓ becomes ↓
https://api.example.com/servers.json?ts=1695691234567

Remote JSON Format:

{
  "hosts": [
    {
      "name": "server-01",
      "hostName": "10.0.1.10",
      "user": "admin"
    }
  ],
  "groups": [
    {
      "name": "Nested Group",
      "defaultUser": "root",
      "hosts": [
        {
          "name": "nested-server",
          "hostName": "10.0.2.10"
        }
      ]
    }
  ]
}

Remote Features:

  • Automatic Fetching: Remote data is loaded when the group is expanded
  • Caching: Remote data is cached for 5 minutes to reduce network calls
  • Full Structure Support: Supports both hosts and nested groups in remote responses
  • Format Support: JSON structure or text format (hostname:name:user:port per line)
  • Basic Authentication: Optional HTTP basic auth support
  • Timestamp Placeholder: Use [timestamp] in URLs to bypass server-side caching
  • Local Merge: Remote hosts/groups are added to local ones, not replaced
  • Error Handling: Shows error messages if remote fetch fails, falls back to cache
  • Manual Refresh: Use "Refresh" button to clear cache and reload
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft