Многие разработчики до сих пор обновляют сайт по старой схеме: правят файл локально, загружают его через FTP-клиент и проверяют результат в браузере. Каждая мелкая правка превращается в несколько шагов, а через пару недель уже трудно вспомнить, какой файл был загружен, а какой остался только на ноутбуке. Расширение Remote SSH для VS Code решает задачу иначе: редактор открывается на вашем компьютере, но файлы, терминал и поиск работают непосредственно на сервере. В итоге проект на сервере выглядит как обычная локальная папка.
Как устроен Remote SSH
Расширение подключается к серверу по обычному SSH и при первом входе устанавливает в домашний каталог пользователя серверную часть — папку ~/.vscode-server. Дальше вся тяжёлая работа — чтение файлов, поиск по тексту, часть расширений и терминал — выполняется на сервере, а ваш компьютер только отрисовывает интерфейс. Поэтому даже в большом проекте ничего не нужно скачивать, а изменение попадает на сервер в момент сохранения. Обратная сторона в том, что на сервере работает дополнительный процесс, который занимает несколько сотен мегабайт на диске и некоторый объём оперативной памяти.
По этой причине удобнее всего Remote SSH работает на VPS или на сервере, которым вы управляете сами. На обычном shared-хостинге, даже при наличии SSH-доступа, соединение может обрываться из-за ограничений на фоновые процессы и ресурсы. Есть ли SSH в вашем тарифе хостинга sayt.uz, можно уточнить в личном кабинете или через техническую поддержку; на VPS у вас полный root-доступ и таких ограничений нет.
Создание SSH-ключа и добавление его на сервер
Вводить пароль при каждом подключении неудобно и небезопасно, поэтому сначала создайте пару SSH-ключей. В Windows 10/11, macOS и Linux команда ssh-keygen уже есть в системе. Команда ниже создаёт современный ключ типа ed25519; когда утилита спросит пароль, лучше задать отдельную кодовую фразу (passphrase) для защиты ключа.
ssh-keygen -t ed25519 -C "noutbuk-ofis"
# Результат: ~/.ssh/id_ed25519 (закрытый ключ) и ~/.ssh/id_ed25519.pub (открытый ключ)
# В Linux/macOS отправить открытый ключ на сервер:
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@203.0.113.10
В Windows утилиты ssh-copy-id может не быть — тогда содержимое файла .pub нужно вручную добавить в ~/.ssh/authorized_keys на сервере. Главное правило: закрытый ключ (id_ed25519) никогда не должен покидать ваш компьютер. Отправить его в мессенджер, по почте или закоммитить в репозиторий — всё равно что отдать сервер постороннему. На сервере также важны права доступа, иначе SSH просто проигнорирует ключ.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Настройка ~/.ssh/config
Remote SSH берёт параметры подключения из стандартного конфигурационного файла SSH, так что достаточно один раз правильно его заполнить, а дальше просто выбирать сервер из списка в VS Code. Каждому серверу даётся короткое имя, указываются адрес, пользователь, порт и путь к ключу. В примере ниже — записи для одного VPS и одного аккаунта хостинга.
Host misol-vps
HostName 203.0.113.10
User deploy
Port 22
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
Host misol-hosting
HostName example.uz
User s0123
Port 22
IdentityFile ~/.ssh/id_ed25519
Параметр ServerAliveInterval раз в 60 секунд отправляет небольшой служебный пакет, и роутер не обрывает соединение, даже если вы долго ничего не печатаете. Перед тем как открывать VS Code, проверьте подключение в обычном терминале командой ssh misol-vps: если там вход проходит без пароля, редактор тоже подключится без проблем.
Подключение из VS Code
Установите расширение «Remote - SSH» от Microsoft из раздела расширений. Затем нажмите на значок удалённого подключения в левом нижнем углу или откройте палитру команд клавишей F1 и выберите «Remote-SSH: Connect to Host». В списке появятся имена из config-файла; при первом подключении редактор спросит тип операционной системы сервера и установит серверную часть. Когда всё готово, через «Open Folder» откройте папку проекта, например /var/www/example.uz или каталог сайта на хостинге.
После этого и встроенный терминал, который открывается по Ctrl+`, работает на сервере. В нём можно выполнять git status, composer install или php artisan migrate, не переключаясь в отдельное SSH-окно. Расширения делятся на два вида: темы и раскладки работают локально, а анализаторы PHP или Python устанавливаются на сервер отдельно, поэтому после подключения их может понадобиться поставить кнопкой «Install in SSH».
Практический пример: сайт клиники в Ташкенте
Представим небольшую ташкентскую клинику, у которой на VPS работает сайт онлайн-записи на Laravel, а разработчик каждую неделю вносит изменения в страницу с расписанием врачей. Раньше он правил файл локально, загружал по FTP и иногда забывал очистить кеш, из-за чего правка не появлялась на сайте. С Remote SSH он подключается к misol-vps, открывает нужный Blade-шаблон, исправляет его, в том же окне выполняет php artisan view:clear и сразу видит результат в браузере. Если возникает ошибка, он открывает storage/logs/laravel.log в том же редакторе и находит нужную строку поиском.
Риски работы на живом сервере
Удобство Remote SSH одновременно создаёт риск: изменение попадает на работающий сайт в момент сохранения, и одна случайная ошибка может положить весь сайт. Поэтому полезно придерживаться нескольких правил:
- Держите проект под Git и делайте коммит после каждой правки — тогда неудачное изменение откатывается одной командой.
- Крупные изменения сначала проверяйте на staging-копии (например,
test.example.uz), а на рабочем сайте делайте только мелкие исправления. - Не подключайтесь под root; используйте отдельного пользователя — владельца файлов сайта, чтобы ошибочная команда не задела системные файлы.
- Закрывайте окно после работы: открытая сессия держит серверную часть в фоне и расходует ресурсы.
Частые проблемы
Если подключение останавливается с ошибкой «Permission denied (publickey)», чаще всего ключ не добавлен на сервер или у файла authorized_keys неверные права. Если подключение надолго зависает на этапе «Setting up SSH host», на сервере может закончиться место на диске или быть ограничен исходящий интернет, ведь серверная часть при первом входе скачивается. В таких случаях быстрее всего открыть панель «Output», выбрать журнал «Remote - SSH» и прочитать точный текст ошибки. Если проблема на стороне сервера, часто помогает удалить старую папку ~/.vscode-server и подключиться заново.