Руководство по удалённому доступу

SSH для задач, VNC для графического интерфейса

LemonVM предоставляет выделенные физические узлы Mac mini. Для сборки из командной строки, сбора логов и автоматизации используйте SSH; для работы в Xcode, удалённого монтажа и задач, требующих полноценного рабочего стола, — VNC. Перед подключением получите в консоли адрес хоста, порт, имя пользователя и начальные учётные данные.

2 способа подключения 5 доступных узлов 1 заказ — выделенный физический узел
Инспектор подключения LEMON SLICE / REMOTE
Параметры проверены
Командная строкаSSH
Графический интерфейсVNC
ХостДанные из консоли
Данные подключенияОтдельно для каждого заказа
SG Сингапур JP Токио KR Сеул HK Гонконг US-W Запад США
Сначала выберите способ подключения

Выбирайте по типу взаимодействия с задачей, а не по названию инструмента

Один облачный Mac может одновременно выполнять задачи в командной строке и графическом интерфейсе. Надёжный подход: SSH для длительных задач и диагностики, VNC — для операций, где нужно видеть рабочий стол.

Минимум служебного трафика

SSH: сборка, автоматизация и логи

Подходит для xcodebuild, fastlane, установки зависимостей, синхронизации репозиториев, проверки логов и фоновых скриптов. При кратковременных сбоях сети используйте инструмент сохранения сеанса, чтобы удалённая задача продолжала выполняться.

Подходит для
Команд, скриптов и непрерывной сборки
Преимущество
Низкое потребление трафика, полная диагностика
Ограничение
Без графического интерфейса macOS
Полноценный рабочий стол

VNC: Xcode, монтаж и визуальная работа

Подходит для работы в графическом интерфейсе Xcode, с симуляторами, материалами, монтажной шкалой и другими задачами, где нужно видеть состояние рабочего стола. При высокой задержке сначала снизьте качество изображения и разрешение, а не переподключайтесь снова и снова.

Подходит для
Графической разработки, монтажа и проверки взаимодействия
Преимущество
Полноценная работа с удалённым рабочим столом macOS
Ограничение
Более высокая чувствительность к задержке, джиттеру и пропускной способности
Настройка SSH

Проверьте пять параметров перед первым подключением

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

01

Считайте хост и порт

Скопируйте адрес хоста и порт SSH в сведениях о текущем сервисе. Адрес, порт и узел вместе определяют цель подключения; после смены узла или сервиса проверьте их заново.

02

Подтвердите имя пользователя

Имя пользователя должно полностью совпадать с данными подключения. Не подставляйте в команду SSH имя пользователя локального компьютера, аккаунт репозитория или имя коллеги.

03

Ограничьте права ключа

Файл закрытого ключа должен быть доступен для чтения только текущему локальному пользователю. В macOS или Linux выполните chmod 600 ~/.ssh/lemonvm_key, затем укажите файл с помощью -i .

04

Проверьте отпечаток при первом подключении

При первом подключении появится отпечаток хоста. Сначала сравните его с данными в консоли. Только при полном совпадении добавляйте его в known_hosts; не пропускайте проверку.

05

Сохраните повторно используемую конфигурацию

Запишите Host, HostName, User, Port и IdentityFile в локальную конфигурацию SSH. Это уменьшит число ошибок при ручном вводе, но не добавляйте содержимое закрытого ключа в файл конфигурации.

Формат команды
ssh -i ~/.ssh/lemonvm_key -p порт имя_пользователя@адрес_хоста
Настройка VNC

Сначала установите рабочий сеанс, затем постепенно повышайте качество

При первом подключении начните со среднего качества изображения и невысокого разрешения. Убедившись, что ввод, буфер обмена и переключение окон работают нормально, настройте параметры с учётом доступного запаса канала.

01

Введите адрес

Используйте хост и порт VNC из консоли, не подставляйте порт SSH. Если клиент требует составной адрес, укажите хост и порт в формате клиента.

02

Начните со среднего качества изображения

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

03

Настройте разрешение

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

04

Проверьте буфер обмена

После подключения проверьте двустороннее копирование на тексте без конфиденциальных данных. Не передавайте через общий буфер обмена закрытые ключи, полные токены доступа или постоянные учётные данные.

05

Проверьте сочетание для полноэкранного режима

Запишите сочетания клавиш клиента для выхода из полноэкранного режима и освобождения захвата клавиатуры. Это предотвратит ошибочное восприятие сеанса как неисправного, если удалённая комбинация будет перехвачена локальной системой.

06

Сохраните канал диагностики SSH

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

Диагностика подключения

Проверяйте всё по уровням: рукопожатие, канал и удалённая сборка

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

Если вы видите Connecting to и нет ответа: проверьте адрес, порт и ограничения локального выхода.
Соединение перешло к согласованию ключей, но аутентификация не удалась: проверьте имя пользователя, путь к закрытому ключу и права файла.
SSH работает, а VNC тормозит: снизьте качество изображения и разрешение и приостановите фоновые передачи.
Подключение работает, но сборка завершилась ошибкой: прочитайте полный лог сборки и не списывайте ошибку задачи на сеть.
remote-diagnostic.log
$ ssh -v -p порт имя_пользователя@адрес_хоста
debug1: Connecting to host [адрес] port [порт]
debug1: Server host key: SHA256:[отпечаток]
debug1: Authentication succeeded (publickey)

$ ping -c 5 адрес_хоста
5 packets transmitted, 5 packets received
round-trip min/avg/max = 41.2/44.8/49.1 ms

$ ssh lemon-node "xcodebuild -version"
Xcode [текущая версия]
Build version [текущий номер сборки]

$ ssh lemon-node "cd ~/project && xcodebuild build"
** BUILD SUCCEEDED **
Фактическая задержка узлов

Сравните пять узлов по единой методике

Таблица показывает относительную разницу между основными точками доступа и Сингапуром, Токио, Сеулом, Гонконгом и западом США. Для интерактивного VNC важны задержка и джиттер, а для фоновой сборки — стабильность соединения и постоянная пропускная способность.

Период тестированияБудни, 20:00–22:00 по местному времени
Размер выборки30 ICMP-запросов на группу
Методика расчётаМедиана после исключения первого пакета
Линия доступаМестный фиксированный или корпоративный оптоволоконный интернет
Медианная задержка ping от основных городов доступа до пяти доступных узлов LemonVM, в миллисекундах
Точка доступа и оператор Сингапур Токио Сеул Гонконг Запад США
Шанхай · China Telecom 68 ms 42 ms 51 ms 35 ms 146 ms
Пекин · China Unicom 91 ms 54 ms 46 ms 58 ms 139 ms
Шэньчжэнь · China Mobile 53 ms 67 ms 76 ms 24 ms 168 ms
Тайбэй · фиксированный интернет 62 ms 39 ms 48 ms 31 ms 126 ms
Лос-Анджелес · корпоративное оптоволокно 171 ms 112 ms 124 ms 143 ms 27 ms

Как читать: для одной точки доступа сначала сравнивайте значения по строке; при использовании VNC одновременно наблюдайте джиттер и потери пакетов. Реальное качество подключения зависит от локального Wi-Fi, выхода оператора, международной маршрутизации и фоновых передач.

Устранение высокой задержки

Сужайте область поиска от локальной сети к удалённому узлу

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

01

Проверьте локальную сеть

Перейдите на проводную сеть или стабильный Wi-Fi 5 ГГц, приостановите локальные загрузки и синхронизацию. Если другие устройства в той же локальной сети тоже работают нестабильно, сначала устраните проблему локального канала.

02

Проверьте международный маршрут

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

03

Сравните выбранные узлы

Выбирайте среди Сингапура, Токио, Сеула, Гонконга и запада США узел, расположенный ближе к основному направлению доступа. Команде следует ориентироваться на местоположение основных операторов или зависимостей сборки.

04

Снизьте качество VNC

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

05

Снизьте разрешение

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

06

Приостановите фоновые передачи

Проверьте получение репозитория, загрузку зависимостей и материалов, передачу артефактов и удалённые задачи синхронизации. Передачу больших файлов следует выполнять отдельно от интерактивной работы в VNC.

Безопасность сеанса

Данные подключения должны получать только те, кому нужен доступ

Границы безопасности удалённого подключения определяются локальными ключами, начальными учётными данными, блокировкой сеанса и передачей задач в команде. Не размещайте постоянные данные доступа в общедоступных чатах или репозиториях.

В первую очередь используйте ключи

Используйте отдельные ключи для разных устройств и храните закрытые ключи только на контролируемых терминалах. После выхода устройства из команды или его потери своевременно удаляйте соответствующий открытый ключ.

Обновите начальные учётные данные

После первого входа и проверки окружения обновите временные учётные данные. Не оставляйте пригодные для прямого использования данные доступа в скриптах, логах сборки или конфигурации репозитория.

Блокируйте сеанс перед уходом

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

Распределяйте доступ между участниками

При совместной работе фиксируйте, кто и когда выполнял задачу, и не используйте один постоянный ключ совместно. При передаче работы указывайте состояние задачи, расположение логов и следующие шаги.

Восстановление после разрыва

Сначала выясните, выполняется ли задача, и только затем переподключайтесь

Исчезновение изображения VNC не означает остановку физического узла. Сначала проверьте состояние по другому каналу подключения, чтобы не запустить сборку повторно, не перезаписать результаты и не прервать выполняющуюся задачу.

Сетевой сбой

SSH и VNC отключились одновременно

Сначала проверьте локальную сеть, затем протестируйте целевой хост и порт. После восстановления сети подключитесь снова и проверьте логи задачи и состояние процессов, не повторяя исходную команду автоматически.

Проверьте: локальный выход, целевой порт, время последней записи в логе
Системный сон

Соединение установлено, но удалённая система не отвечает

Проверьте состояние текущего сервиса через консоль, затем проверьте отклик системы по SSH. После восстановления проверьте настройки питания и сеанса, чтобы длительные задачи не переводили систему в неподходящий режим сна.

Проверьте: отклик SSH, системное время, выполняющиеся процессы
Графический сеанс

SSH работает, но изображение VNC неисправно

Снизьте параметры отображения и заново установите графический сеанс. Не перезапускайте весь узел, пока не проверите состояние задачи: фоновая сборка может продолжаться нормально.

Проверьте: удалённую нагрузку, графический сеанс, настройки клиента
Фоновая задача

После разрыва сборка продолжается

После переподключения прочитайте логи, код завершения и каталог артефактов. Запускайте следующую сборку только после подтверждения, что исходная завершилась или завершилась ошибкой, чтобы избежать параллельной записи в одно место.

Проверьте: идентификатор процесса, код завершения, время изменения артефактов