В этой статье мы разберемся, как настроить удаленную разработку в VS Code через плагин remote-ssh.
Все последующие действия провожу в операционной системе семейства linux (linux mint 20.1), если вы собираетесь настраивать Remote-SSH в Windows 10, то рекомендуется предварительно настроить WSL, об этом процессе можно прочитать, перейдя по ссылке.
Установка Remote-SSH в редактор VSCode
Перейдите в Расширение
и в поиске найдите пакет Remote SSH
, разработчиком которого указана компания Microsoft. Нажмите на кнопку «Установить», чтобы установить пакет.
Также автоматически будут установлены дополнительные пакеты.
Настройка SSH-соединения в редакторе VSCode
Есть два способа настроить подключение по SSH.
- Аутентификация с вводом пароля.
- Аутентификация через SSH ключи.
Рекомендуется использовать аутентификацию на основе ключей SSH, поскольку она более безопасна и уменьшает время, связанное с постоянным вводом паролей. Нажмите F1
или CTRL + SHIFT + P
и введите remote-ssh
. Он покажет список доступных команд. Выберите Add New SSH Host
.
Теперь вам нужно ввести строку состоящую из команды подключения к ssh соединению, точно также как происходит процесс подключения к ssh серверу через консоль.
ssh username@ip
На следующем шаге вам будет предложено указать расположение файла конфигурации, в котором вы хотите сохранить информацию о подключении. выберите место, которое вам подходит, и нажмите Enter
.
Рекомендуется создать собственный файл конфигурации, выбрав «Настройки» и указав расположение своего файла. Вы также можете добавить параметр remote.SSH.configFile
в файл settings.json
и обновить расположение пользовательской конфигурации.
{
"remote.SSH.configFile": "path-to-file"
}
Ниже приведены параметры, сохраненные в файле конфигурации как часть предыдущих шагов. Вы можете сразу же настроить этот файл, а не делать это через vscode.
Host xxx.com
User USERNAME
HostName IP
IdentityFile "SSH KEY LOCATION"
Вот как работает этот файл конфигурации:
- Host: указывает имя вашего хоста. Это позволяет использовать короткое имя или аббревиатуру вместо полного IP-адреса либо имя хоста при подключении к серверу.
- HostName: фактическое имя хоста сервера, которое представляет собой либо IP-адрес, либо полностью квалифицированное доменное имя.
- User: пользователь, от имени которого вы хотите выполнить подключение.
- IdentityFile: путь к вашему закрытому ключу SSH. На системах Mac и Linux вы найдете ее в домашнем каталоге в скрытом каталоге
.ssh
, обычноid_rsa
. Если вы используете Windows, у вас будет указано местоположение для сохранения этого файла при его создании с помощьюputty-gen
.
Подключитесь к удаленному серверу SSH с помощью ввода пароля в VSCode
Теперь давайте подключимся к удаленному хосту, нажав F1
или CTRL + SHIFT + P
-> REMOTE-SSH
-> CONNECT TO HOST
-> CHOOSE HOST IP
.
Теперь вам будет предложено проверить fingerprint, поскольку это первое подключение к удаленному компьютеру.
После того как вы нажмете Continue
, вам будет предложено ввести пароль. После ввода пароля он успешно подключится к удаленной машине SSH.
Подключитесь к удаленному серверу SSH с помощью ключа авторизации в VSCode
Для активации SSH key-based authentication, сгенерируйте пару публичного и приватного ssh ключей с помощью следующей команды.
ssh-keygen -t rsa -b 4096
И скопируйте публичный ключ на удаленный сервер с помощью следующей команды (заменив username@host на своё значение)
ssh-copy-id -i ~/.ssh/id_rsa.pub username@host
Теперь войдите на хост вручную, чтобы проверить, нормально ли работает аутентификация на основе ключей. Затем, откройте файл конфигурации SSH в VScode и добавьте параметр ниже. Этот параметр направляет на ваш файл с секретным ключом и указывает vscode использовать аутентификацию на основе ключей вместо аутентификации на основе пароля.
IdentityFile ~/ssh/id_rsa
Еще раз подключитесь к вашему хосту, выполнив ту же процедуру, что и на предыдущих шагах. На этот раз вам не будет предложено ввести пароль. Если у вас возникли проблемы с установкой удаленного подключения, вы можете проверить логи.
Чтобы открыть логи, нажмите F1
или CTRL + SHIFT + P
–> REMOTE-SSH
–> Show Log
.
Чтобы закрыть активное соединение, выберите close remote connection
, нажав F1
или CTRL + SHIFT + P
-> REMOTE-SSH
-> Close Remote Connection
, или просто закройте vscode, который отключит сеанс.
ProxyCommand
Иногда вам может потребоваться подключиться с вашего настольного компьютера или ноутбука к удаленному компьютеру через интранет вашей компании или за брандмауэром. В этом случае вы можете использовать промежуточный сервер или jump-box. Этот тип настройки полезен, если вы работаете в защищенной системе, которая настроена на прием SSH-соединений только от фиксированного набора хостов.
Чтобы использовать настройку jump-box с расширением Remote-SSH, вы можете использовать параметр конфигурации ProxyCommand
. Эта конфигурация откроет фоновое SSH-соединение с jump-box, а затем подключится через частный IP-адрес к цели.
Вы можете установить параметр конфигурации ProxyCommand
в файле конфигурации SSH следующим образом:
# Jump box с публичным IP-адресом
Host jump-box
HostName 52.179.157.97
User sana
IdentityFile ~/.ssh/jumpbox
# Целевая машина с приватным IP-адресом
Host target-box
HostName <IP address of target>
User sana
IdentityFile ~/.ssh/target
ProxyCommand ssh -q -W %h:%p jump-box
ControlMaster
Если вы подключаетесь к удаленному хосту SSH с использованием других методов аутентификации, кроме аутентификации на основе ключей, например двухфакторной, на основе пароля или ключа SSH с парольной фразой, вам может потребоваться вводить необходимую информацию несколько раз.
Вместо того, чтобы открывать несколько соединений SSH, вы можете использовать опцию ControlMaster
(только на клиентах macOS/Linux), чтобы повторно использовать существующее соединение и сократить количество раз, когда вы должны вводить вашу фразу-пароль.
Чтобы использовать эту функцию, добавьте следующее в ваш конфигурационный файл SSH:
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
Автономный удаленный компьютер
! В настоящее время это экспериментальная функция, но она будет включена по умолчанию в следующем выпуске.
Если вы ограничены брандмауэром или ваша компания блокирует ваши виртуальные машины, и они не могут подключиться к Интернету, расширение Remote-SSH не сможет подключиться к вашей виртуальной машине, поскольку VS Code должен загрузить компонент, называемый VS Code Server, на удаленную машину.
Однако теперь вы можете решить эту проблему с помощью нового пользовательского параметра в расширении Remote-SSH. Если вы включите параметр remote.SSH.allowLocalServerDownload
, расширение сначала установит VS Code Server на клиент, а затем скопирует его на сервер через SCP.
Настройка Remote-SSH для подключения к хостингу BEGET
Следующая часть статьи рабочая, но устаревшая, более свежий вариант настройки подключения по ssh к хостингу beget вы можете изучить по ссылке.
Если попробовать подключиться через Remote-SSH к хостингу BEGET, то появится ошибка, чтобы её исправить нужно сделать две вещи:
- Настроить авторизацию к докер контейнеру бегет без ввода пароля
- Добавить автоматический вход в докер контейнер при авторизации к ssh
Настройка авторизации к докер контейнеру бегет без ввода пароля
Подключаемся к ssh вашего хостинга бегет, затем вводим команду
ssh-copy-id "-p 222 localhost"
Вводим пароль подключения и нажимаем enter.
Теперь проверим, что всё прошло успешно, пробуем подключится к докер контейнеру
ssh localhost -p 222
Если подключение прошло без ввода пароля, значит всё работает.
Автоматический вход в докер контейнер beget при авторизации к ssh
! Стоит заметить, что при включении данной функции может происходить ошибка при подключении к серверу через ftp клиент. Как решить данную проблему я не нашел, если у когото есть идеи, напишите мне, добавлю в статью.
Убеждаемся, что находимся в домашней директории (~). Редактируем файл .bashrc
.
nano .bashrc
Добавляем в самый верх следующие строки
if echo $SSH_CLIENT | grep --quiet -v '127\.0\.0\.1'
then
ssh localhost -p 222
fi
Сохраняем изменения.
Пробуем подключиться через Remote-SSH.
Заключение
Подключившись к удаленному серверу можно изменять файлы не покидая окна редактора кода, а также запускать команды в терминале удаленного сервера не переключаясь к стороннему ssh приложению.
Теперь у вас есть Visual Studio Code, настроенный для разработки на удаленном сервере с помощью SSH. Удаленное исполнение при помощи IDE обеспечивает множество преимуществ, в том числе способность быстро тестировать процесс выполнения вашего кода на различных операционных системах и с различными техническими спецификациями оборудования. Если у вас есть подключение к Интернету, вы можете подключаться к вашему серверу и работать над вашим кодом с любого компьютера, а также можете заниматься разработкой в среде Linux, даже если будете использовать Windows в качестве основной операционной системы.