company_banner

Удаленный SSH: советы и лайфхаки

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



Подключение с использованием 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 Расположение файла, в котором вы сохранили свой закрытый ключ.
Вы можете добавить информацию для всех хостов, которые у вас есть. После сохранения файла конфигурации вы сможете увидеть эти узлы в Remote Explorer, а также любые папки, которые вы открыли на этом узле. Вы можете выбрать значок рядом с каждым хостом или папкой, и он запустит новое окно VS Code (экземпляр) и соединит вас с этим хостом. На снимке экрана ниже я подключен к своей удаленной машине «python-linux-vm», и Remote Explorer показывает мне папки, к которым я подключался в прошлом, а также любые перенаправленные порты с удаленной машины.



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). Это ночная сборка расширения, где мы экспериментируем с новыми функциями и настройками, прежде чем добавить их в стабильную версию.
  • +10
  • 7,1k
  • 5
Microsoft
405,27
Microsoft — мировой лидер в области ПО и ИТ-услуг
Поделиться публикацией

Похожие публикации

Комментарии 5

    0
    Очень хочется, чтобы еще intellisense всякие работали. Я так понимаю, это вопрос не к RemoteSSH, а к VSCode'у?
      0
      Я активно wsl использую с инсайдерской версией кода. Насколько я понимаю, код инжектит на удаленую машину свою headless версию и все работает. Просто надо установить плагины именно в headless версию.
        0
        Насколько я понимаю, код инжектит на удаленую машину свою headless версию и все работает.

        Вот этот момент не совсем понял. Почему он инжектит себя на удаленную машину?
          0
          А почему нет? Работать с локальной ФС сильно проще. Плюс запуск кода в отладчике проще проводить локально. А на удаленую сторону только результаты отдавать.
      0
      Можно проще:
      ProxyJump jump-box

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое