Skip to content

addspin/vssh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vSSH - SSH Manager for VS Code and other forks

Менеджер SSH подключений с интеграцией SFTP, поддержкой туннелей, сессий и SSH Gateway.

Возможности

  • 📁 Организация серверов - группировка по папкам с цветовой маркировкой
  • Избранное - быстрый доступ к часто используемым серверам
  • 📚 Сессии - группировка серверов для одновременного подключения
  • 🔌 Быстрое подключение - SSH терминал в один клик
  • 📤 SFTP браузер - передача файлов
  • 🚇 SSH туннели - создание локальных туннелей с автозапуском
  • 🌉 SSH Gateway - подключение через Bastion/Jump Host
  • 🔍 Поиск серверов - быстрый поиск по имени, хосту, пользователю
  • 📋 Отдельный конфиг - ~/.vssh/vssh-config.json
  • 🔐 Шифрование - AES-256-CBC для паролей
  • 📥 Импорт/Экспорт - перенос конфигурации

Версия 1.1.2 и ранее (устаревшая)

⚠️ НЕ СОВМЕСТИМА с версией 2.0.0+

Миграция: При обновлении на версию 2.0.0+:

  1. Старые пароли не расшифруются (старый ключ)
  2. Удалите ~/.vssh/vssh-config.json или пересоздайте серверы
  3. Введите новый мастер-пароль
  4. Создайте подключения заново

Требования

Для password аутентификации:

  • macOS: brew install sshpass
  • Linux: apt install sshpass

Для privateKey аутентификации:

  • Ничего дополнительно не требуется

Установка

VS Code

# Из VSIX файла
code --install-extension vssh-1.0.1.vsix --force

# После установки перезапустите VS Code (Cmd+Q / полностью закройте и откройте)

Cursor

# Из VSIX файла
cursor --install-extension vssh-1.0.1.vsix --force

Из GitHub Releases

  1. Скачайте .vsix файл со страницы Releases
  2. Установите командой выше или через GUI

Запуск и использование

После установки

  1. Откройте VS Code или Cursor
  2. Нажмите на иконку vSSH Explorer в левой панели (activity bar)
  3. Или нажмите Ctrl+Shift+P (Cmd+Shift+P на Mac) → введите vSSH

Первый запуск для разработки

Если вы разрабатываете плагин:

# Терминал 1: режим компиляции с наблюдением
npm run watch

# Терминал 2: запустите VS Code для отладки
code .
# Затем нажмите F5 для запуска в режиме отладки

Откроется новое окно VS Code с установленным плагином.


Использование

Открытие панели

  1. Нажмите на иконку vSSH Explorer в activity bar (слева)
  2. Или Ctrl+Shift+PvSSH: SSH Servers

Добавление сервера

  1. Нажмите кнопку + Add Server в панели
  2. Заполните параметры:
    • Имя сервера
    • Host (IP или домен)
    • Порт (по умолчанию 22)
    • Имя пользователя
    • Метод аутентификации (ключ или пароль)
  3. Настройте Gateway (опционально):
    • Выберите "Настроить Gateway"
    • Введите Gateway Host, Port, Username
    • Выберите метод аутентификации Gateway
  4. Нажмите Enter

Подключение

  • Кликните на сервер → иконка Connect (📎)
  • Откроется терминал с SSH сессией

SFTP

  1. Правый клик на сервере → Open SFTP Panel
  2. Откроется панель с файлами сервера
  3. Используйте кнопки для загрузки/скачивания файлов

Туннели

Создание туннеля:

  1. Правый клик на сервере → Create Tunnel
  2. Введите: localPort:remoteHost:remotePort (например: 8080:localhost:80)
  3. Выберите автозапуск (опционально)

Управление туннелями:

  • Панель SSH Tunnels отображает все сохранённые туннели
  • 🚀 - туннели с автозапуском
  • ▶️ - запустить туннель
  • ⏹️ - остановить туннель
  • 🗑️ - удалить туннель
  • Close All - закрыть все активные туннели

Автозапуск туннелей:

  • Туннели с 🚀 запускаются автоматически при старте VS Code
  • Остальные можно запустить вручную из панели туннелей

SSH Gateway (Bastion / Jump Host)

Подключение к внутренним серверам через промежуточный хост:

  1. При создании сервера выберите "Настроить Gateway"
  2. Заполните параметры Gateway:
    • Host - IP или домен bastion (например: 10.0.0.1)
    • Port - порт bastion (обычно 22)
    • Username - пользователь на bastion
    • Auth Method - ключ или пароль
    • Password/Key - аутентификация для bastion

Пример сценария:

Ваш компьютер → Bastion (10.0.0.1) → Внутренний сервер (192.168.1.100)

Папки

Создание папки:

  • Нажмите + Add Folder в заголовке панели
  • Или правый клик на папке → Add Folder (создаст подпапку)

Цвет папки:

  • При создании выберите цвет (синий, зелёный, жёлтый, оранжевый, красный, фиолетовый)
  • Правый клик на папке → Edit Folder → изменить цвет

Перемещение:

  • Drag-and-drop серверов и папок между папками
  • Перетащите в корень для извлечения из папки

Удаление:

  • Правый клик на папке → Delete Folder
  • ⚠️ Удаляет все серверы и подпапки внутри

Поиск серверов

  1. Нажмите кнопку 🔍 Search Servers в панели
  2. Введите запрос (имя, хост или пользователь)
  3. Выберите сервер из списка
  4. Сервер подключится

Избранное (Favorites)

Добавить в избранное:

  1. Найдите сервер в SSH Servers
  2. Нажмите ⭐ Add to Favorites (звезда справа от сервера)
  3. Сервер появится в панели Favorites

Открыть из избранного:

  1. Кликните на сервер в Favorites
  2. Или нажмите 📡 Open
  3. Сервер подключится

Удалить из избранного:

  1. Нажмите 🗑️ Remove на сервере
  2. Или правый клик → Remove from Favorites

Сессии (Sessions)

Создать сессию:

  1. Нажмите 💾 Create Session в заголовке SSH Servers или Sessions
  2. Введите имя сессии (например: "Production Servers")

Добавить сервер в сессию:

  1. Найдите сервер в SSH Servers
  2. Нажмите 💾 Save to Session
  3. Выберите сессию из списка

Запустить сессию:

  1. Откройте панель Sessions
  2. Найдите папку сессии
  3. Нажмите ▶️ Launch Session
  4. Все серверы сессии подключатся одновременно

Управление сессией:

  • 🗑️ Remove на сервере в сессии — удалить сервер из сессии
  • 🗑️ Delete Session на папке — удалить всю сессию

Пример структуры сессии:

Sessions:
  📁 Production (3 серверов)  [▶️]
    ├─ 🖥 prod-web-01  [🗑️]
    ├─ 🖥 prod-web-02  [🗑️]
    └─ 🖥 prod-db-01  [🗑️]

Конфигурация

Расположение

~/.vssh/vssh-config.json

Формат

{
  "servers": [
    {
      "name": "production",
      "host": "192.168.1.100",
      "port": 22,
      "username": "admin",
      "authMethod": "privateKey",
      "privateKeyPath": "/Users/user/.ssh/id_rsa",
      "folder": "a1b2c3d4e5f6",
      "gateway": {
        "host": "10.0.0.1",
        "port": 22,
        "username": "bastion",
        "authMethod": "password",
        "password": "AES256:encrypted..."
      }
    }
  ],
  "folders": [
    {
      "id": "a1b2c3d4e5f6",
      "name": "Production",
      "color": "#e05555",
      "parentFolder": null
    }
  ],
  "tunnels": [
    {
      "id": "tunnel123",
      "serverName": "production",
      "serverId": "production",
      "localPort": 8080,
      "remoteHost": "localhost",
      "remotePort": 80,
      "isActive": false,
      "autoStart": true
    }
  ],
  "favorites": [
    {
      "id": "fav123",
      "name": "production",
      "serverName": "production",
      "serverId": "production",
      "savedAt": "2026-02-23T..."
    }
  ],
  "sessions": [
    {
      "id": "session123",
      "name": "Production Servers",
      "servers": ["prod-web-01", "prod-web-02", "prod-db-01"],
      "savedAt": "2026-02-23T..."
    }
  ]
}

Шифрование

Версия 1.1.2+ (текущая)

Мастер-пароль:

  • При первом запуске запрашивается мастер-пароль
  • Пароль не сохраняется в системе
  • Запрашивается при каждом запуске VS Code
  • Все пароли серверов шифруются этим мастер-паролем

Алгоритм:

  • AES-256-CBC

Переносимость:

  • Конфигурацию можно переносить между компьютерами
  • На новом компьютере введите тот же мастер-пароль
  • Все пароли расшифруются

Смена мастер-пароля:

Ctrl+Shift+P → vSSH: Change Master Password
  1. Введите старый пароль (проверка)
  2. Введите новый пароль
  3. Все пароли перешифруются новым ключом

Безопасность

Преимущества:

  • Пароли не хранятся в открытом виде
  • Мастер-пароль не сохраняется в системе
  • Переносимость между компьютерами

⚠️ Важно:

  • Запомните мастер-пароль
  • При утере мастер-пароля пароли не восстановить
  • Используйте надёжный мастер-пароль

Разработка

# Установка зависимостей
npm install

# Компиляция
npm run compile

# Режим наблюдения
npm run watch

# Сборка VSIX
npm run package

# Установка локальной версии
code --install-extension vssh-1.0.1.vsix --force

Структура проекта

vssh/
├── src/
│   ├── extension.ts        # Точка входа, регистрация команд
│   ├── serverProvider.ts   # Дерево серверов/папок, drag-and-drop
│   ├── sftpProvider.ts     # SFTP дерево с upload/download/edit
│   ├── sshConfig.ts        # Менеджер конфигурации с шифрованием
│   ├── sshConnection.ts    # SSH подключение через терминал
│   ├── tunnelManager.ts    # SSH туннели с автозапуском
│   ├── tunnelProvider.ts   # Провайдер дерева туннелей
│   ├── favoriteManager.ts  # Менеджер избранного
│   ├── favoriteProvider.ts # Провайдер дерева избранного
│   ├── sessionManager.ts   # Менеджер сессий
│   ├── sessionProvider.ts  # Провайдер дерева сессий
│   └── types.ts            # TypeScript интерфейсы
├── images/
│   └── icon.png            # Иконка расширения
├── package.json            # Manifest расширения
├── tsconfig.json           # TypeScript конфигурация
└── README.md               # Документация

Частые проблемы

sshpass не найден

Симптом: При подключении с паролем появляется предупреждение

Решение:

# macOS
brew install sshpass

# Linux (Debian/Ubuntu)
sudo apt install sshpass

# Linux (RHEL/CentOS)
sudo yum install sshpass

Туннель не создаётся

Симптом: Ошибка "Порт уже используется"

Решение:

  • Проверьте занятость порта: lsof -i :8080
  • Освободите порт или используйте другой
  • Закройте старые туннели: Close All Tunnels

Папки не отображаются

Симптом: Папки созданы, но не видны в дереве

Решение:

  • Перезагрузите VS Code полностью (Cmd+Q / Quit)
  • Проверьте консоль разработчика на ошибки

Лицензия

MIT


Ссылки

About

Simple ssh manager for vs code and fork

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors