В предыдущем посте о Remote SSH мы рассмотрели, как настроить виртуальную машину Linux и подключиться к виртуальной машине с помощью расширения Remote — SSH в Visual Studio Code. В этом посте мы расскажем о некоторых советах и приемах, которые вы можете использовать, чтобы максимально эффективно пользоваться удаленной настройкой.

Расширение Visual Studio Code Remote — SSH позволяет подключаться к удаленной машине или виртуальной машине с использованием SSH, и все изнутри VS Code. Если расширение еще не установлено, можно выполнить поиск «remote ssh» во вкладке «Расширения» (⇧⌘X).

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

В предыдущем посте об удаленном SSH мы подключались только к одной машине и, когда это было предложено, вводили «user@host». Если вы регулярно подключаетесь к нескольким удаленным серверам или локальным виртуальным машинам, есть лучший способ подключения без необходимости запоминать все имена пользователей, адреса и дополнительные параметры конфигурации.
OpenSSH поддерживает использование файла конфигурации для хранения всех ваших различных SSH-соединений. Чтобы использовать файл конфигурации SSH, нажмите на удаленный индикатор, чтобы вызвать удаленные команды, выберите «Open Configuration File», и выберете файл, который находится в «Users/{yourusername}/.ssh/config».

Вот пример файла конфигурации SSH:
Существует много других параметров конфигурации, которые вы можете указать в формате файла конфигурации SSH. Вы получите дополнения в этом файле, и вы можете нажать (⌃Space) для IntelliSense, чтобы узнать больше о параметрах конфигурации.
Опции, использованные выше:
Вы можете добавить информацию для всех хостов, которые у вас есть. После сохранения файла конфигурации вы сможете увидеть эти узлы в Remote Explorer, а также любые папки, которые вы открыли на этом узле. Вы можете выбрать значок рядом с каждым хостом или папкой, и он запустит новое окно VS Code (экземпляр) и соединит вас с этим хостом. На снимке экрана ниже я подключен к своей удаленной машине «python-linux-vm», и Remote Explorer показывает мне папки, к которым я подключался в прошлом, а также любые перенаправленные порты с удаленной машины.

Иногда вам может потребоваться подключиться с вашего настольного компьютера или ноутбука к удаленному компьютеру через интранет вашей компании или за брандмауэром. В этом случае вы можете использовать промежуточный сервер или jump-box. Этот тип настройки полезен, если вы работаете в защищенной системе, которая настроена на прием SSH-соединений только от фиксированного набора хостов.
Чтобы использовать настройку jump-box с расширением Remote — SSH, вы можете использовать параметр конфигурации
Вы можете установить параметр конфигурации
Если вы подключаетесь к удаленному хосту SSH с использованием других методов аутентификации, кроме аутентификации на основе ключей, например двухфакторной, на основе пароля или ключа SSH с парольной фразой, вам может потребоваться вводить необходимую информацию несколько раз.
Вместо того, чтобы открывать несколько соединений SSH, вы можете использовать опцию
Чтобы использовать эту функцию, добавьте следующее в ваш конфигурационный файл SSH:
Если вы ограничены брандмауэром или ваша компания блокирует ваши виртуальные машины, и они не могут подключиться к Интернету, расширение Remote — SSH не сможет подключиться к вашей виртуальной машине, поскольку VS Code должен загрузить компонент, называемый VS Code Server, на удаленную машину.
Однако теперь вы можете решить эту проблему с помощью нового пользовательского параметра в расширении Remote — SSH. Если вы включите параметр
Примечание. В настоящее время это экспериментальная функция, но она будет включена по умолчанию в следующем выпуске.
Если вы хотите протестировать новые обновления и экспериментальные функции, как только они станут доступны, установите расширение Remote — SSH Nightly (сначала удалите стабильное расширение Remote-SSH). Это ночная сборка расширения, где мы экспериментируем с новыми функциями и настройками, прежде чем добавить их в стабильную версию.

Подключение с использованием Remote SSH
Расширение Visual Studio Code Remote — SSH позволяет подключаться к удаленной машине или виртуальной машине с использованием SSH, и все изнутри VS Code. Если расширение еще не установлено, можно выполнить поиск «remote ssh» во вкладке «Расширения» (⇧⌘X).

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

Файл конфигурации SSH
В предыдущем посте об удаленном SSH мы подключались только к одной машине и, когда это было предложено, вводили «user@host». Если вы регулярно подключаетесь к нескольким удаленным серверам или локальным виртуальным машинам, есть лучший способ подключения без необходимости запоминать все имена пользователей, адреса и дополнительные параметры конфигурации.
OpenSSH поддерживает использование файла конфигурации для хранения всех ваших различных SSH-соединений. Чтобы использовать файл конфигурации SSH, нажмите на удаленный индикатор, чтобы вызвать удаленные команды, выберите «Open Configuration File», и выберете файл, который находится в «Users/{yourusername}/.ssh/config».

Вот пример файла конфигурации SSH:
# Читайте подробности о файлах конфигурации SSH: https://linux.die.net/man/5/ssh_config
Host python-linux-vm
HostName <vm address>
User sana
IdentityFile ~/.ssh/id_python_vm
Host node-vm
HostName <vm address>
User sana
Port 5522
IdentityFile ~/.ssh/id_node_vm
Существует много других параметров конфигурации, которые вы можете указать в формате файла конфигурации SSH. Вы получите дополнения в этом файле, и вы можете нажать (⌃Space) для IntelliSense, чтобы узнать больше о параметрах конфигурации.
Опции, использованные выше:
Host | Легко запоминающийся псевдоним для вашего хоста. |
HostName | Имя хоста сервера (вы можете использовать IP-адрес сервера). |
User | Пользователь, которого вы указали для входа в систему через SSH. |
Port | Порт, используемый для подключения через SSH. Порт по умолчанию — 22, но если вы указали уникальный порт, вы можете настроить его здесь. |
IdentityFile | Расположение файла, в котором вы сохранили свой закрытый ключ. |

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 Nightly extension
Если вы хотите протестировать новые обновления и экспериментальные функции, как только они станут доступны, установите расширение Remote — SSH Nightly (сначала удалите стабильное расширение Remote-SSH). Это ночная сборка расширения, где мы экспериментируем с новыми функциями и настройками, прежде чем добавить их в стабильную версию.