Вопрос или проблема
VS Code может подключаться к вычислительным экземплярам Microsoft Azure ML, и, похоже, делает это через SSH. Встроенный терминал в VS Code неудобен в использовании, требует настройки, чтобы избежать потери нажатий клавиш, таких как ctrl+v, ctrl+вверх/вниз и т.д. (что делает использование программ, таких как Vim и Tmux, немного проблематичным). Я хочу использовать обычное терминальное приложение вместо встроенного терминала в VS Code.
К сожалению, я не могу просто включить SSH из Azure Portal из-за организационной бюрократии (общее мнение заключается в том, что VS Code правильно настраивает свои соединения, поэтому ручная настройка несет риск ошибок). Это потратит слишком много политического капитала, чтобы попытаться получить исключение, поэтому мне нужно работать в рамках этого ограничения и использовать существующие возможности VS Code. Например, мне разрешено использовать перенаправление портов в VS Code.
У меня есть root-доступ на моих удаленных серверах, так что, думаю, я мог бы просто:
- Настроить openssh на удаленном сервере так, чтобы он разрешал подключения только с его собственного localhost (Azure по умолчанию должен блокировать входящие подключения, но учитывая, что VS Code это опровергает…)
- Запустить sshd на remote:xxxx
- Создать туннель через VS Code по какому-то порту на моей локальной машине
Я больше люблю vim, так что, возможно, я упускаю какую-то возможность в VS Code. Есть ли лучший способ использовать возможности VS Code для получения удаленного терминала из моего терминала? Мне даже не важно, буду ли я вызывать SSH сам или VS Code просто предоставит мне оболочку в терминале на мой выбор; существует ли функция, которую я пропустил, такая как integrated.terminal.replace="/path/to/some/terminal.exe"
или integrated.terminal.useWindowsTerminal=true
?
Ответ или решение
Альтернативы встроенному терминалу VS Code для SSH на вычислительных экземплярах Azure ML
При использовании Microsoft Azure ML вычислительных экземпляров через VS Code, многие пользователи сталкиваются с проблемами при работе с встроенным терминалом. В частности, функциональность терминала может быть неудобной, особенно при использовании таких текстовых редакторов, как Vim или терминальных мультиплексоров, таких как Tmux. Данная статья рассматривает возможные альтернативные решения для подключения к SSH без использования встроенного терминала VS Code, а также использование существующих возможностей VS Code для обхода текущих ограничений.
1. Использование SSH через внешний терминал
Шаги для настройки:
-
Запуск SSH-сервиса на экземпляре: Как вы уже упомянули, вы можете ограничить SSH-соединение только для локального доступа. Убедитесь, что SSH-сервер (sshd) запущен и принимает соединения только с localhost.
-
Настройка портов в VS Code: Вы можете настроить переадресацию портов в VS Code. Это позволит вам направлять локальный порт на удаленный хост через VS Code. Например, если вы установите переменную окружения
REMOTE_PORT
на ваше SSH-подключение, вы сможете использовать любой внешний терминал на вашем локальном компьютере для доступа к нему. -
Подключение через внешний терминал: После настройки переадресации портов вы можете использовать любой терминал (например, Terminal на macOS или любой терминал для Windows, такой как Git Bash или Windows Terminal) для подключения к вашему удаленному экземпляру Azure ML через SSH с помощью команды:
ssh user@localhost -p REMOTE_PORT
Замените
user
на ваше имя пользователя иREMOTE_PORT
на порт, который вы настроили в VS Code.
2. Использование VS Code SSH настроек
Если Вы хотите настроить более удобный доступ к таким инструментам, как Vim, вы также можете обратиться к расширению Remote – SSH в VS Code, которое позволяет подключаться к удаленным машинам через SSH. Это расширение может быть более удобным и гибким, чем стандартный встроенный терминал.
Шаги для настройки:
- Установите расширение Remote – SSH из Marketplace.
- Настройте файл конфигурации SSH (обычно находится в
~/.ssh/config
), чтобы указать параметры подключения к вашему экземпляру Azure ML. - Используйте команду "Remote-SSH: Connect to Host" для подключения к вашему удаленному экземпляру. Это создаст сессии редактирования и работы с файлами на удаленном сервере, что может быть более удобным, чем использование встроенного терминала.
3. Настройка пользовательского терминала в VS Code
К сожалению, на данный момент не существует нативной поддержки для замены встроенного терминала на какой-либо другой терминал в VS Code. Однако вы можете попробовать использовать опции настройки для изменения поведения встроенного терминала, что может улучшить ваши впечатления от работы с ним:
- Вы можете устанавливать определенные параметры в файле настроек, такие как:
"terminal.integrated.defaultProfile.windows": "Windows PowerShell", "terminal.integrated.defaultProfile.linux": "bash",
- Это позволит вам выбирать предпочитаемые профили терминала, хотя, к сожалению, не предоставляет возможности переключения на сторонние приложения (например, Windows Terminal или ConEmu).
Заключение
Существуют различные подходы для подключения к Azure ML вычислительным экземплярам с использованием SSH без зависимостей от встроенного терминала VS Code. Можно использовать SSH через внешний терминал, расширение Remote – SSH, а также настройки интегрированного терминала. Выбор метода зависит от ваших предпочтений и требований к рабочему процессу. Важно отметить, что использование портов и SSH-сервисов может потребовать дополнительной настройки безопасности, чтобы убедиться, что у вас есть доступ без необходимости обхода политик безопасности вашей организации.