Принципы работы SSH и VS Code
Beget Official

Всем привет!
Мы увидели ваш интерес к техническим статьям и поэтому сегодня осветим одну из возможностей редактора VS Code, а именно – подключение по SSH к удаленному серверу.
Планируем погрузиться в тему довольно глубоко, поэтому начнём с основ.
Что же такое SSH?
SSH - это сетевой протокол прикладного уровня, предназначенный для безопасного удаленного управления операционной системой и туннелирования TCP-соединений. Протокол очень популярен, потому что шифрует всю передаваемую информацию по сети.
Чаще всего его используют для:
- удаленного управления данными пользователя на сервере;
- запуска консольных утилит на удалённом сервере;
- работы в консольном режиме с базами данных;
- передачи данных между серверами
Мы предоставляем предоставляет SSH-доступ на всех платных тарифах виртуального хостинга.
Чтобы подключиться по SSH, используйте свои логин и пароль от входа в Панель управления аккаунтом.
Для подключения по ssh в качестве хоста укажите `вашлогин`.beget.tech. Логин и пароль соответствуют логину и паролю от Вашего аккаунта.
Если Вы используете терминал, нужно ввести команду:
```
ssh вашлогин@вашлогин.beget.tech
```
Так же вы можете воспользоваться веб-консолью.
Имя сервера для подключения можете посмотреть на главной странице в вашей Панели управления в табличке "Общая информация".

Помимо пары логин/пароль от ПУ аккаунта для подключения по SSH можно создать дополнительный доступ к корню аккаунта или определённой директории в разделе FTP.

Если в строке "Путь к директории" указан / - с его помощью можно подключиться в корень аккаунта и работать со всеми сайтами аналогично подключению по логину/паролю от ПУ аккаунта.
Если указан путь вида /rnddir - с его помощью можно подключиться и работать с директорией rnddir и вложенными.
Стоит иметь в виду, что если на аккаунте есть директории, которые посредством Файлового менеджера открыты для общего доступа, с ними можно будет работать, используя любые доступы по SSH в рамках одного аккаунта, пусть даже созданы они и не для этих директорий.
Переходим к самой интересной части статьи - мы добрались к информации про VS Code!
Особенно ценен при работе с удаленной разработкой Visual Studio Code (VSC) - редактор исходного кода, имеющий широкие возможности для кастомизации.
Важно: Для удаленного подключения через VS Code необходимо включить возможность использовать SSH, по умолчанию на всех тарифах нашего хостинга доступ по протоколу SSH выключен.
Чтобы включить доступ по SSH, потребуется нажать на кнопку включения доступа в Панели Управления аккаунтом. Она располагается на главной странице в разделе "Тех. информация".


Переходим к настройке подключения.
Чтобы VS Code корректно работал, он автоматически копирует свою бинарную часть, vscode-server, на удаленный сервер и запускает его, после чего клиент обменивается информацией с сервером. Для работы бинарной части требуется проксировать подключение в docker.
Первый шаг - прокинуть публичный ssh-ключ на сервере. Для начала нужно проверить, нет ли уже созданных ключей.
Выполнить это можно прямо из Панели управления хостингом, через web-терминал с помощью команды ls -l ~/.ssh :

Если файлы с названием id_rsa* отсутствуют, необходимо сгенерировать ключ:

Готово? Если мы всё сделали правильно, будет активно приглашение ввода в терминале.
Рекомендуем нашу статью об автоматической SSH-авторизации по ключу, в ней можно найти много полезной информации о создании SSH-ключей и примерах автоматического подключения из Windows через Putty и PuTTYgen.
Теперь добавим публичный ключ в доверенные, чтобы подключение по localhost не требовало пароль при каждой попытке подключения, что делает работу приятнее и экономит время.
В этом нам помогут команды:
cat .ssh/id_rsa.pub >> . ssh/authorized_keys
chmod 600 .ssh/authorized_keys

Следующий шаг - установка и настройка самого VS Code.
Скачать VS Code можно по этой ссылке.
Также, для начала работы нам потребуется скачать и установить расширение Remote SSH. Вы можете найти Remote SSH во вкладке «Расширения» (Ctrl+Shift+X):

После установки расширения вы увидите индикатор в нижнем левом углу строки состояния. Этот индикатор сообщает, в каком контексте выполняется VS Code (локальном или удаленном). Щелкните индикатор, чтобы открыть список команд удаленного расширения:

Для подключения к серверу сформируйте конфигурационный файл. Для этого выберите "Open Сonfiguration file" - "... /.ssh/config".
Добавьте и сохраните в файле конфигурации параметры для подключения. Пример конфигурации:

"Host" может быть любым именем.
В параметрах "User", "ProxyJump", "ProxyCommand" укажите ваши данные соответственно.
Ключ -W может быть неизвестен для пользователей, туннелирование в SSH часто уступает простому подключению к серверу.
Мы предлагаем выбрать свой путь: можно воспользоваться конфигурациями из нашего гайда или копнуть ещё глубже, как в этой статье от автора Георгия Шуклина. В ней подробно описано:
- управление ключами;
- копирование файлов через SSH;
- проброс потоков ввода/вывода;
- монтирование удалённой FS через SSH и многое другое.
Теперь мы переходим к подключению к серверу.
После создания файла конфигурации по индикатору нужно открыть список команд удаленного расширения. Выберите вариант подключения: в текущем окне или в дополнительном.

Из списка выберите добавленный вами Host:

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

То, что мы увидели на скриншоте выше, зовется SSH-отпечатком.
SSH-отпечаток — это число, которое вычисляется от открытого ключа, который хранится по пути /etc/ssh в файле с разрешением pub.
Если вы такие же гики, как мы и любите глубоко погружаться, исследуя все уголки - вот ссылка на отличную статью про отпечатки SSH от Артура Гарипова.
Поздравляем, вы успешно прошли долгий путь и вместе с нами подключились по SSH через VS Code! Мы сделали первые шаги в освоении VS Code - редактора исходного кода, который предоставляет разработчикам широкие возможности для редактирования, отладки и тестирования кода, а также предоставляет более удобный доступ к программам, таким как Docker, Git и другие.
Можно приступать к работе!
Мы рады помочь на любом этапе настройки в случае необходимости в тикете, пишите вопросы в разделе “Помощь и Поддержка” в Панели Управления.