[Программирование, Удалённая работа] Дружим WSL и VSCode через Tailscale и упрощаем работу в сети (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
27-Фев-2021 21:31


От переводчика:Когда-нибудь я подключу к одной сети VPN свою нынешнюю машину в Беларуси и машину в России. Пробовал на зуб ZeroTier, чтобы соединить их вообще, но сервис мне не зашёл, тем более, тогда речь не шла о том, чтобы легко подружить подсистему Linux внутри Windows с любой другой машиной извне. Здесь речь именно об этом. Поэтому, думаю, этот перевод окажется полезным не только мне.Tailscale – это сеть VPN, которая не нуждается в конфигурировании. Она работает поверх других сетей, «выравнивает» сети и позволяет пользователям и сервисам упростить коммуникацию и сделать её безопаснее. Я подробно писал о том, как подключиться к WSL2 внутри Windows 10 по SSH, с другого компьютера. В инструкции по ссылке не только множество шагов, но и несколько способов подключения.Кроме того, повторю то, что я говорил в статье об SSH: если вы активный разработчик и хотите поделиться сервисами и сайтами, над которыми работаете, со своими коллегами и соавторами, то придётся разобраться с нетривиально большим объёмом настроек, управления и обслуживания. Другими словами:
Не было бы проще, если бы все были в одной сети и одной подсети?
Поясню. WSL первой версии делит сетевой стек с Windows 10, поэтому «машина» WSL и Windows рассматривается как одна и та же. Выполняемый на порте 5000 сервис, – сервис Windows или работающее в Linux под WSL1 приложение – выполняется на одной и той же машине. Однако в WSL2 Linux находится за хостом Windows.Хотя WSL2 упрощает доступ к http://localhost:5000через прозрачную переадресацию портов, ваш Linux на WSL на самом деле не является одноранговым узлом в той же сети, что и другие ваши устройства.Инструмент вроде Tailscale решает проблему, то есть как будто выравнивает сеть. Надо сказать, что из-за некоторых особенностей WSL2 при работе с ней можно допустить несколько ошибок. Я расскажу, что делал, чтобы всё заработало у меня.Tailscale на WSL2Установите WSL2 – следуйте этой инструкции. Установите дистрибутив Linux. Я работал с Ubuntu 20.04. Погрузитесь в процесс, создайте пользователя и т.д. Установите Windows Terminal – работа с командной строкой станет приятнее. Установите Tailscale – я руководствовался инструкцией для Ubuntu 20.04. Настройка WSL2Сейчас нельзя запустить Tailscale на WSL2 через IPv6, поэтому я отключил протокол:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
Здесь мы запускаем демон. На WSL2 пока нет systemd, но если ваша версия сборки Windows 10 выше 21286, можно выполнять команды при запуске WSL. Лично я прописал всё в bash.
sudo tailscaled
Также у нас нет возможности выполнять интерактивный вход в систему WSL, поэтому, чтобы поднять Tailscale внутри WSL, вам нужно сгенерировать ключ предварительной аутентификации и аутентифицировать одну машину. Пропишите сгенерированный ключ с команде запуска, как это сделал я:
tailscale up --authkey=tskey-9e85d94f237c54253cf0
Мне нравится держать Tailscale открытым в другой вкладке терминала или в другой панели вкладок, так, чтобы смотреть логи. Это интересно и информативно!В панели администрирования машин Tailscale вы увидите все машины в сети, как показано ниже. Обратите внимание: scottha-proto в списке – это Windows, а scottha-proto-1 – это Linux. Первая машина – это мой хост, вторая – экземпляр Linux WSL2, они теперь в одной сети!
У меня получилось пригласить пользователя вне своей сети при помощи новой функции совместного использования узлов. Мой друг Гленн не работает в моей организации, но так же, как и я, пользуется OneDrive или DropBox, чтобы создать ссылку или по созданной ссылке получить доступ к одной сущности системы, а не ко всей системе. Я могу сделать то же самое в смысле Tailscale:
Можно пригласить Гленна, чтобы он подключился к работающему в WSL2 сервису прямо из дома.Создаём сервис и привязываем его к сети TailscaleЯ установил .NET 5 в Ubuntu на WSL2, создал папку и запустил команду dotnet new web, чтобы сгенерировать микросервисный Hello World. Когда я запускаю сервис – .NET, Node, или какой-то ещё, – важно, чтобы он прослушивался в сети Tailscale. Linux в WSL2 подключена к нескольким сетям.По умолчанию мои системы разработчика прослушиваются только локальным хостом; прослушивать сервисы во всех сетях (включая Tailscale) средствами .NET можно по-разному, я запустил прослушивание так:
dotnet run --urls http://*:5100;https://*:5101
Итак, я подключился к IP-адресу в Tailscale, который связан с моим экземпляром WSL2, и постучался к моему сервису внутри Linux:
Что теперь можно сделать? Мы с Гленном находимся в сети Tailscale, кроме того, вся сеть единообразная, а значит, Гленн может легко достучаться до моего сервиса! На скрине ниже я нахожусь в Teams: мой рабочий показывается внизу, а рабочий стол Гленна – наверху.
Добавляем VSCode и расширение SSH для удалённой разработкиОкей, у нас есть безопасная, единообразная сеть и полная свобода! Могу ли я превратить мой экземпляр WSL2 в систему удалённой разработки для Гленна? Конечно, почему бы и нет?
Для ясности: это просто разговоры, эксперимент, но в нём что-то есть. Например, кроссплатформенность: можно работать с Mac, Windows, WSL2 и так далее. Этим разделом можно руководствоваться, чтобы поднять виртуальную машину на любом облачном или обычном хостере, установить Tailscale и больше не думать о перенаправлении портов, пользуясь поднятой машиной как песочницей. Да, можно работать с WSL локально, но установка на хосте – это весело, так появляется много классных вариантов.
Начнём. В WSL2 я запускаю сервис ssh. Можно было поделиться открытыми ключами и войти в систему с их помощью, но здесь залогинюсь по имени пользователя и отредактирую /etc/ssh/sshd_config, установлю порт, ListenAddressи PasswordAuthenticationв Yes:
Port 22
#AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
PasswordAuthentication yes
glenn – локальный суперпользователь только в моём инстансе WSL2:
sudo adduser glenn
usermoid -aG sudo glenn
Теперь Гленн устанавливает пакет VS Code Remote Development и при помощи Remote via SSH подключается к моему IP в сети Tailscale. Ниже вы видите VS Code на машине Гленна, где ставится VS Code Server [не перепутайте с code-server для развёртывания VSC в вебе] и удалённую разработку вообще. С точки зрения архитектуры Гленн и код в VS Code поделены пополам между клиентом на его машине Windows и сервером на моём экземпляре WSL2. Обратите внимание: в левом нижнем углу видно, что его VSCode подключён к IP моей WSL2 в сети Tailscale!
Что вы думаете об этом? Можно сравнить Tailscale с инструментами типа ориентированного на разработчиков типаNGrok, который прокладывает туннели к localhost, но есть кое-какие существенные отличия. Проведите расследование! Я никак не отношусь к компании NGrok, разве что я её фанат.А спонсор этой недели… я! Этот блог и мой подкаст были любимым делом на протяжении девятнадцати лет. Ваше спонсорство оплачивает мой хостинг, благодаря ему я покупаю гаджеты для обзоров, а иногда – тако. Присоединяйтесь!
===========
Источник:
habr.com
===========

===========
Автор оригинала: Scott Hanselman
===========
Похожие новости: Теги для поиска: #_programmirovanie (Программирование), #_udalennaja_rabota (Удалённая работа), #_wsl, #_vscode, #_vpn, #_programmirovanie (
Программирование
)
, #_udalennaja_rabota (
Удалённая работа
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 02:05
Часовой пояс: UTC + 5