Иногда очень не хочется редактировать файлы в vim или, прости господи, nano на удалённом сервере, а хочется нормального размера окна, подсветки синтаксиса и прочих удобств графического редактора текста с претензией на IDE, коим является Visual Studio Code. Под катом — инструкция, как с помощью нехитрой магии сделать себе удобное редактирование конфигов, кода и всего такого. Disclaimer: я не приветствую редактирование кода на продакшене мимо VCS.

Данная последовательность действий предполагает, что на сервере вы можете получить права суперпользователя, вы знаете, что такое SSH, и вы уже можете подключиться к своему серверу без проблем с той машины, на которой установлен Visual Studio Code.

Шаг 1: устанавливаем в Visual Studio Code расширение Remote VSCode. Нажимаем Ctrl-P и вводим:

ext install remote-vscode

Шаг 2: открываем параметры редактора сочетанием клавиш Ctrl-,, и добавляем в настройки пользователя следующие параметры:

// Порт, по которому rcode будет "дозваниваться" до нашего сервера
"remote.port": 52698,

// Запускать ли сервер удаленного редактирования при запуске редактора?
"remote.onstartup": true

// На каком сетевом адресе слушать команды. 127.0.0.1 здесь менять не стоит.
"remote.host": "127.0.0.1"

// Если вы не хотите видеть ошибки "Remote port already in use", включите эту опцию
"remote.dontShowPortAlreadyInUseError": false

Шаг 3: устанавливаем rcode на нужный сервер. Реализаций rcode великое множество на различных языках программирования, и если вы хотите какую-то специфическую — на странице расширения Remote VSCode перечислены они все. Я же использую самую универсальную реализацию — на чистом Bash (который есть на серверах почти всегда). Для её установки на сервере выполняем следующую последовательность команд:

sudo wget -O /usr/local/bin/rcode \
https://raw.github.com/aurora/rmate/master/rmate
chmod a+x /usr/local/bin/rcode

Настоятельно рекомендую проверить содержимое файла /usr/local/bin/rcode, прежде чем запускать его.

Шаг 4: На локальной машине редактируем настройки соединения по SSH с нужным сервером, чтобы Port Forwarding, через который и будет работать rcode, запускался автоматически. В файл ~/.ssh/config/ добавляем следующие строки:

Host хостнейм.удаленного.сервера
Port 22
User ваш_пользователь
ForwardAgent yes
RemoteForward 52698 127.0.0.1:52698

Две последних строки включают Port Forwarding для выбранного сервера.

Перезапускаем Visual Studio Code, перезапускаем SSH-соединение, и с помощью команды rcode <somefile> пробуем открыть файл в локальном редакторе. Скорее всего, файл откроется, и вы сможете его нормально редактировать. Помните — если соединение с сервером потеряно, файл не сохранится даже после переподключения, его придётся сохранять вручную.

Если при попытке запуска rcode возникает ошибка «команда не найдена», добавьте в .bashrc своего пользователя следующую строку:

export PATH="$PATH:/usr/local/bin"

Если у вас не Bash, то вы а) наверняка знаете об этом и б) сами можете добавить в свои настройки шелла эквивалент команды выше.