LINUX.ORG.RU

Удалённая работа, mosh, ssh, etc...

 , , , ,


0

1

COVID вскрыл массу трудностей с удалённой работой. Основная из которых – чудовищная латентность и потеря пакетов в сети, шейпинг VPN провайдерами, идиотская организация VPN у работодателя, когда траффик из Москвы в Москву, на расстояние 3-х километров идёт через Лондон…

Вариант работы через ssh – практически мало применим из-за заметной латентности (в редакторе просто сложно перемещать клавишами курсор и попадать им в нужное место), из-за разрывов и переподключений.

Через VNC практически работать вообще невозможно. Тоже латентность и нужна большая ширина канала. Через RDP – в варианте когда RDP может работать через UDP (что вызывает массу сложностей в преодолении фаерволов) более-менее шевелится, но тоже так себе. И последнее работает только в варианте винды-винды, не для линукса.

Нашёл для себя mosh. Он более-менее сглаживает проблемы с ssh, но добавляет своих. Во-первых не всегда через фаервол проходит (проблемы как с просто блокировкой UDP, так и с тем, что в отсутствии траффика NAT забывает про соответствие портов). И самое главное, в нём проблемы с отмоткой буфера терминала назад (наверх) – её попросту нет (потому, что mosh эмулирует, условно, 80x24, только видимую часть, а не 80x2000).

Но нужна-то в основном не работа в консоли, а работа с редактором исходных текстов. И если редактор запускать в ssh, mosh, etc, то латентность так или иначе даст о себе знать. Гораздо лучше, когда редактор может работать локально, только передавая изменения по сети. С такими редакторами в linux всё достаточно плохо:

  1. Emacs имеет такой режим, но проблема Emacs в том, что он Emacs, кроме того, непонятно насколько хорошо там работает навигация по тексту, скорей не очень.

  2. Vim имеет такой режим только для галочки. Можете редактировать по одному файлику, при этом проблема с навигацией по исходникам (можно пропатчить tags файл от ctags, но с GNU global такой номер уже не проходит, с поиском по многим файлам тоже проблема).

  3. говорят что-то умеет sublime, но я не видел из-за бедности, и догадываюсь, там далеко не всё так волшебно как описывают.

  4. на удивление более-менее почти пристойно работает Visual Studio Code. Соединяется через ssh, вытаскивает оттуда файлы, редактирует, поиск производит удалённо на той стороне и только передаёт результаты (Vim тоже можно научить в принципе). Проблема VSCode в трудном, неудобном, интерфейсе и плохой навигации по исходным текстам (перейти к определению идентификатора она умеет, а в обратную сторону, найти все использования – только поиском, что не всегда быстро, удобно и корректно).

  5. про Eclipse не знаю… может кто расскажет.

И в любом случае редактор-комбайн плохая замена обычной консоли. Есть масса нюансов, когда консоль побеждает. Когда нужно что-то нестандартное, или посмотреть логи, например.

Микрософтовский подход с RDP и UDP не так уж плох, думается, но к сожалению для Linux нет никакой альтернативы вообще. Хотелось хотя бы mosh с возможностью отмотки буфера экрана… (–no-init знаю, но в половине случаев это не работает).

Кроме того, UDP плохо проходит не только через фаерволы интернет-провайдера, но даже через корпоративные сети. В то время как HTTPS всегда везде разрешен. В идеале хотелось бы видеть что-то вроде mosh, но со следующими свойствами:

  1. работа через множественные короткоживущие HTTPS-соединения, фонтанное кодирование (как способ помехоустойчивого кодирования в условиях регулярных разрывов);

  2. симуляция не 80x24, а терминала вместе с буфером (несколько тысяч строк) и передача обновлений на сторону клиента;

  3. предсказание реакции на ввод с помощью обучения и симуляция реакции нажатия на клавиши (до того, как пакеты добежали до удалённой стороны, обработались, и фактическая картинка пришла обратно). mosh это умеет делать только в ограниченном множестве случаев, заданных вручную. Очевидно, реакцию под все возможные программы предусмотреть трудно, но при этом вполне возможно фактическое обучение на примерах.

  4. поддержка не единственного, а множества терминалов в рамках одного соединения (обычно для работы нужно несколько окон). Разные варианты вроде GNU screen и его альтернатив, увы, неудобны в использовании. Окна всё же хочется, чтоб управлялись оконным менеджером, чтоб между ними можно было переключаться, двигать их и т.п., причём принципиально мышью.

Могут заметить, мол зачем тогда терминалы. Чем RDP хуже? На самом деле, практически ничем кроме одного: совершенно не нужен «рабочий стол» с удалённой машины. Нужны только отдельные пять окон, например. И чтоб они управлялись локальным оконным менеджером, без задержек в отрисовке. Не знаю есть ли «бесшовный» RDP в современности, во времена Citrix (~2006г) что-то такое было. Кроме того буфер терминала, который проматывать можно нужен также локальный (чтоб отрисовывался без торможений), кроме того предиктивное обновление экрана с последующей заменой картинки фактическим результатом, чего RDP не умеет (и что очень просто психологически выматывает, когда работаешь на компьютере, где на экране нет обратной связи на все твои действия).

Может существуют какие-то проекты приближающиеся к описанным пожеланиям?


идиотская организация VPN у работодателя

Обращался к админам организации или только в спортлото? Мне вот и альтернативный протокол дали и подсказали как пустить общий трафик мимо туннеля.

Через VNC практически работать вообще невозможно

А с ним никто вменяемый и не работает, либо RDP, либо PCoIP, остальное только в локалке. Если организация заставила, это отличный способ пинать хер на работе.

С такими редакторами в linux всё достаточно плохо

VSCode

Может существуют какие-то проекты приближающиеся к описанным пожеланиям?

Не работайте с мудаками и все будет хорошо

Lordwind ★★★★★
()

Одна тема чудеснее другой.
Что тебе не дает запускать редактор текстов на локальной системе?

thesis ★★★★★
()
Ответ на: комментарий от thesis

Что тебе не дает запускать редактор текстов на локальной системе?

То, что этот проект нужно целиком вытащить на локальную систему, настроить всё окружение. Что очень неудобно из-за объёмов. Потом так работать неудобно тоже, если через git, будешь постоянно что-то забывать, когда что-то делается одновременно на двух машинах. Вместо git можно запускать unison, но не сильно легче.

Сетевая файловая система с кешированием файлов на локальном диске была бы отличным вариантом (наподобии как DFS сделано у микрософта, «автономные файлы» хотя бы). Но единственное что под линукс есть похожее – coda, и оно как не работало толком ~15 лет назад, так и сейчас ничего не изменилось. В AFS вроде появилось локальное кеширование, но не смотрел, не знаю.

Проекты а-ля sshfs – это просто демка, на сколько-нибудь заметных объёмах оно загибается и кеширования на диске там вообще нет.

fk0
() автор топика
Ответ на: комментарий от fk0

сделай локальную копию через rsync или syncthing.

pfg ★★★★★
()
Ответ на: комментарий от fk0

По-моему, заюзать локальное ИДЕ, умеющее таскать файлы по сфтп, и приколхозить к нему на хоткей скрипт, который будет по ссх запускать сборку сильно проще, чем мучаться с латентностью.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от minda

ssh YKiCguXm84rZmTiv9PZlExUX1@sg2.tmate.io

За такое сразу расстрел. Кроме того там ssh, на сервер где-то в америке (значит с задержками вплоть до 200мс).

X2Go

Все эти новомодные проекты как правило являются плохонькими обертками вокруг других старых протоколов со своими застарелыми проблемами.

Кстати VNC не так уж и плох, если его заставить работать в 8-битном режиме (с палитрой, а не RGB332). Более-менее шевелится, но проблему латентности оно не решает. Она вообще не разрешима в рамках любых протоколов использующих TCP. А в рамках UDP лишь частично разрешима (менее чувствительна к потерям пакетов, в т.ч. вызванным 100% загрузкой канала).

Нормальное разрешение проблемы латентности мне видится только двумя способами:

  1. предиктивное обновление экрана (а-ля mosh);

  2. организация прямого канала связи, путём пробития фаервола, что не всегда возможно и не всегда допустимо, за что тоже расстрел.

fk0
() автор топика
Ответ на: комментарий от fk0

Все эти новомодные проекты как правило являются плохонькими обертками вокруг других старых протоколов со своими застарелыми проблемами.

Потому что это не новомодные проекты. У новомодных проектов, того же Parsec, вместо тупого копирования битмап - видеокодек, благодаря чему задержки минимальные. Периодически хожу на машину из другого города, зачастую по LTE, и тормозов не ощущаю.

Естественно это ничего не даст, когда у вас пинги огромные.

предиктивное обновление экрана (а-ля mosh);

Повернуть такое с графикой будет очень сложно (невозможно?).

По-моему самой дельный вариант это, как упомянули выше, синхронизировать дерево файлов.

token_polyak ★★★★★
()

Копируешь ссд с работы себе домой в виртуалку и всё, проблема решена.

fulmar_lor
()
Ответ на: комментарий от fk0

неудобно тоже, если через git, будешь постоянно что-то забывать

Тред рискует стать эпичным. Git не лекарство от склероза или маразма. Но свои задачи решает.

Сетевая файловая система с кешированием файлов на локальном диске была бы отличным вариантом

А sshfs использовать религия не позволяет?

Lordwind ★★★★★
()

Может существуют какие-то проекты приближающиеся к описанным пожеланиям?

ansible. Для тех кто в танке, не нужно удалённо редактировать, код ли, конфиги ли - не нужно ничего и никогда.

slovazap ★★★★★
()
Ответ на: комментарий от thesis

вечнозеленые KDE или freecad.

Так не надо пользоваться кривым и недоделанным софтом. Тем более, когда есть вменяемые альтернативы.

minda
()
Ответ на: комментарий от minda

X2Go

Работает через ssh со всеми вытекающими из ssh проблемами.

turtle_bazon ★★★★★
()
Ответ на: комментарий от fk0

Сетевая файловая система с кешированием файлов на локальном диске была бы отличным вариантом

GlusterFS, OrangeFS, CEPH? Правда, оно всё такое, compicated в данном случае.

sshfs – это просто демка

Ни разу не демка, нормально там с объёмами, но в твоём случае оно наследует все минусы ssh.

turtle_bazon ★★★★★
()

Emacs имеет такой режим, но проблема Emacs в том, что он Emacs,

Это не проблема. Это решение.

P.S. Из Берлина захожу в виртуалки в Сиднее. Не понимаю ваших проблем, попробуйте перезагрузить роутер.

ugoday ★★★★★
()

Всё верно описал, можно из поста wiki страничку делать. Про rsync уже сказали. Алсо:

  1. Если сидишь с мобильного интернета, то купи 2 симки разных операторов и переключайся между ними. У меня вот вчера теле2 лагал, пинги по 1-10 секунд. А на билайне в той же локации 40ms как на проводе. Были дни когда наоборот – билайн лагал, теле2 норм.
  2. Купи VPS на каком-нибудь yandex.cloud с низким пингом и проксируй ssh трафик через него (jump host). Тогда ретрансмиты будут быстрее.

потому, что mosh эмулирует, условно, 80x24, только видимую часть, а не 80x2000

tmux

snizovtsev ★★★★★
()
Последнее исправление: snizovtsev (всего исправлений: 1)

проблемы с отмоткой буфера терминала назад

Ее и из ядра выкинули в этом году.

Dog ★★★
()

Во-первых, у тебя (у твоей организации) какие-то проблемы с настройкой VPN, УМВР. Во-вторых, для линукс есть SPICE, который в принципе раньше работал (хотя начал деградировать и для 20-й Убунты может уже доломали).

В-третьих, VSCode умеет переходить к определению для множества языков, просто нужно поставить и настроить плагины. Хотя не знаю, будет ли она это делать в «удалённом» режиме.

В-четвёртых, да, должна быть инструкция по развёртыванию проекта, которая должна поддерживаться в актуальном состоянии. Если такой инструкции нет, то в проекте проблемы.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 3)

Вариант работы через ssh – практически мало применим из-за заметной латентности (в редакторе просто сложно перемещать клавишами курсор и попадать им в нужное место), из-за разрывов и переподключений.

vim scp://user@myserver[:port]//path/to/file.txt

Crocodoom ★★★★★
()

Нашёл для себя mosh. Он более-менее сглажив

Это тупая реклама както мош? У меня до ковида стояла RMS. Причем с своиим ID сервером. Что соответствовало правилам нашей конторы. Во время ковида эта система удаленного доступа ну очень помогла. Она бесплатна. Почти незаметными ограничениями. Система отечественная. Как не ругай.

Bootmen ☆☆☆
()
Ответ на: комментарий от Bootmen

Это тупая реклама какой-то RMS? mosh - это полностью свободное решение, за которым стоит чувак из MIT, коллега единственного в мире RMS. Никаких «незаметных ограничений» и прочей шарварной мути из девяностых, только святая GPLv3.

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 2)
Ответ на: комментарий от den73

Хотя не знаю, будет ли она это делать в «удалённом» режиме.

Будет, плагины устанавливаются в удаленную рабочую область вместе с сервером. При работе через remote ssh именно так.

julixs ★★★
()
Ответ на: комментарий от fk0

Потом так работать неудобно тоже, если через git

Посоны, расходимся, это тролль.

t184256 ★★★★★
()

Через VNC практически работать вообще невозможно

Да оно и внутри локалки на 10Мб/с может выдавать некоторые задержки..

rumgot ★★★★★
()

Ты и сам описал много причин задержек. К сожалению, их обойти - это около-невозможно.

Некоторое время приходилось работать на удаленке через виндовый RDP + OpenVPN (Windows <—> windows) - все равно задержки чувствуются при наборе кода, скорости отработки автодополнения, удалении символов через Backspace и т.п. Хоть не большие но есть и это не добавляет комфорта.

Сейчас на текущем месте политика компании позволяет вести разработку непосредственно на том компе, который дома стоит (т.е. свой или взятый у компании) с отправкой на git-сервер компании.

Думаю такие вопросы должны решаться именно политическими методами (т.е. разрешением хранить код у себя), а не техническими. Ведь если я имею доступ к удаленному пк, что то я один хрен имею доступ и к коду, что мне помешает его скачать?

rumgot ★★★★★
()

git pull

vim hello.c

git add hello.c

git commit -m ‘позволь себе узнать о сетевых возможностях гита’

git push

pihter ★★★★★
()

Микрософтовский подход с RDP и UDP не так уж плох, думается, но к сожалению для Linux нет никакой альтернативы вообще.

тебе действительно этот RDP нужн?
тут есть рабочий и демо рабочее
https://github.com/AndreyBarmaley/linux-terminal-service-manager

anonymous2 ★★★★★
()
Ответ на: комментарий от thesis

Так я ж не знаю

Сразу слился?

Значит винда тоже прямой не является, так?

Качественные бесплатные CAD — это фантастика.

Ты тут пришел советы раздавать

Нет. Пришел пытаться подучивать и шланговать именно ты. Сам же указал, что KDE и FreeCAD — это кривое и недоделанное говно. Я и пытаюсь понять то, кто же тебя заставляет и как этим пользоваться? Есть же качественный софт. Зачем страдать-то, используя халявный треш?

minda
()
Ответ на: комментарий от minda
- Так не надо пользоваться кривым и недоделанным софтом. Тем более, когда есть вменяемые альтернативы.
- А как называются вменяемые альтернативы?
- ШЛАНГУЕШЬ СЛИЛСЯ ВЕНДА НЕТ ТЫ
thesis ★★★★★
()
Ответ на: комментарий от thesis

Неплохой манямирок.

Но вернемся к реальности:

Так не надо пользоваться кривым и недоделанным софтом. Тем более, когда есть вменяемые альтернативы.
- А я хотеть халявный и качественный 3D CAD под онтопик
- Э, чел, такого не бывает. Спустись на Землю. Или венда теперь от этого тоже говно?
- ХЗ, ЭТО ТЫ ВСЕ ПРО АНАЛОГИ! НЕ ТОМИ! ХАЛЯЯВААА
- Слился? Это -- фантастика. Зачем страдать-то, используя халявный треш?
minda
()
Ответ на: комментарий от minda

Не, я вижу, что тебе больно. А хотелось-то не чтоб тебе было больно, а кад для люниксов. Скромный, чисто чертить и чтобы не валилось как пьяная шлюха на каблуках.

thesis ★★★★★
()

Я себе сделал для удаленки сделал так: на рабочей машине сделал сделал сетевую прозрачность для иксов. К рабочему компу подключаюсь по ssh, В консоли запускаю редактор, он работает без лагов ощутимых. Если обрывы связи, то чувствуются.

dicos ★★
()

латентность

8-bit цвета пробовал?

Shadow ★★★★★
()
Ответ на: комментарий от fk0

вроде появилось локальное кеширование,

кеш NFS - это фича автомонтировщика NFS, если что. Да, работает. Нет, не помогу, последний раз пользовался в 1999 году.

Shadow ★★★★★
()
Ответ на: комментарий от token_polyak

пинги огромные.

И, кстати, такое обычно при дефектах физической сети...

Shadow ★★★★★
()
Ответ на: комментарий от rumgot

Через VNC практически работать вообще невозможно

Да оно и внутри локалки на 10Мб/с может выдавать некоторые задержки..

На wifi 11g неюзабельно, только начиная с минимального 11n.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

Ну у каждого свои мерки неюзабельности. Я чувстовал фризы при открытии меню или всплывающих подсказок или промотке длинных списков.

rumgot ★★★★★
()
Ответ на: комментарий от Shadow

Там разговор шел о 3d. Хотя я и для 2d либрой не пользуюсь, не могу ничего сказать.

thesis ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.