Соберите и проверьте отпечаток хоста
Перед первым подключением получите открытый ключ хоста ED25519, вычислите его отпечаток и сравните с данными передачи. Не игнорируйте предупреждение без предварительной проверки.
ZoneMini предоставляет выделенные физические машины, а не виртуальные. Используйте SSH для команд сборки, общий экран macOS для задач с графическим интерфейсом или зарегистрируйте выделенный узел как CI Runner. Сначала проверьте данные подключения, затем выберите способ доступа и не раскрывайте учётные данные в переписке или логах конвейера.
Три способа могут использоваться одновременно. Для повседневной автоматизации выбирайте SSH или Runner; общий экран включайте только для просмотра интерфейса Xcode, изменения системных настроек или графической диагностики.
Используйте SSH для клонирования репозиториев, установки зависимостей, запуска тестов, сборки Xcode из командной строки, просмотра логов, синхронизации артефактов и проверки диска. Стабильные скрипты должны использовать аутентификацию по ключу, а псевдоним узла следует добавить в локальную конфигурацию SSH.
Используйте общий экран для просмотра проектов Xcode, графической отладки, проверки доступа к связке ключей, настройки дисплея и проверки результатов архивирования. По завершении работы заблокируйте сессию и не оставляйте конфиденциальные данные на рабочем столе или в буфере обмена.
После регистрации узла в существующей CI-системе назначайте метки по репозиторию, ветке или типу задачи. Runner должен использовать отдельный рабочий каталог и ограниченный токен, а для кэша и артефактов сборки следует задать чёткие правила очистки.
Сбой подключения часто вызван не неисправностью хоста, а несоответствием адреса узла, имени пользователя, сетевых правил или статуса заказа. Проверяйте всё в указанном порядке, чтобы не действовать методом проб и ошибок.
Войдите в консоль, проверьте, передан ли экземпляр, и подтвердите модель, узел и срок аренды по текущему заказу. Данные подключения должны полностью соответствовать этому экземпляру.
Скопируйте адрес хоста из консоли. Не используйте адреса из старых заявок, скриптов или командных чатов. В командах с несколькими узлами добавляйте к адресам метки назначения.
Имя пользователя SSH и имя пользователя графической сессии могут отличаться. Не угадывайте имя по умолчанию и не встраивайте временный пароль в скрипты.
Временные учётные данные предназначены только для первого входа. Сразу после успешной авторизации обновите их и сохраните новые данные в утверждённом командой менеджере паролей.
Убедитесь, что текущая сеть разрешает исходящие соединения к целевому порту. Корпоративная сеть, прокси и средства защиты могут ограничивать SSH или графические подключения — заранее уточните это у сетевого администратора.
Зафиксируйте узел, назначение, ответственного, отпечаток хоста и дату смены учётных данных. После первого подключения не игнорируйте предупреждения об изменении отпечатка.
Не вставляйте временные учётные данные, закрытые SSH-ключи, токены репозитория или сертификаты подписи в публичные обсуждения, полные логи конвейера или незашифрованные документы. При обращении в поддержку предоставляйте только обезличенный вывод команд.
Открыть консоль и проверить данные подключенияВ командах ниже используются заполнители; реальные адреса узлов и учётные данные не указаны. Замените заполнители данными из консоли и выполняйте команды в доверенной сети.
Перед первым подключением получите открытый ключ хоста ED25519, вычислите его отпечаток и сравните с данными передачи. Не игнорируйте предупреждение без предварительной проверки.
Создайте отдельную пару ключей для узла ZoneMini. Закрытый ключ храните на локальном контролируемом устройстве, а открытый ключ добавьте в список разрешённых на удалённом хосте.
Сохраните в конфигурации SSH адрес хоста, имя пользователя, путь к ключу и параметры поддержания сессии, чтобы не вводить их вручную и не путать разные узлы.
Убедитесь, что вход по ключу работает, и только после этого обновите временные учётные данные. Не удаляйте единственный рабочий способ входа до проверки ключа.
ssh-keyscan -t ed25519 <node-address> > zonemini_hostkey
ssh-keygen -lf zonemini_hostkey
ssh-keygen -t ed25519 -f ~/.ssh/zonemini_ed25519
ssh-copy-id -i ~/.ssh/zonemini_ed25519.pub <user>@<node-address>
ssh -i ~/.ssh/zonemini_ed25519 <user>@<node-address>
Host zonemini-build
HostName <node-address>
User <user>
IdentityFile ~/.ssh/zonemini_ed25519
ServerAliveInterval 30
ServerAliveCountMax 3
Общий экран подходит для графической отладки в Xcode, проверки системных настроек и контроля архивирования. Скрипты сборки, сбор логов и пакетные операции по-прежнему лучше выполнять через SSH.
В Finder на macOS выберите «Переход» → «Подключиться к серверу», введите адрес сервера из данных передачи и войдите в сессию с разрешённым именем пользователя и учётными данными.
vnc://<node-address>
Используйте пункт подключения к серверу в Finder и не сохраняйте учётные данные через ярлыки из ненадёжных источников.
Проверьте имя пользователя и адрес узла, затем введите учётные данные. При совместной работе не используйте одну и ту же долгосрочную учётную запись.
При нестабильной сети сначала снизьте разрешение или качество цвета. Рабочий стол высокого разрешения увеличивает объём передачи данных и задержку ввода.
Не копируйте закрытые ключи, полные токены или пароли в открытом виде. Перед вставкой между сессиями проверьте целевое окно и текущего пользователя.
Закрытие клиента не всегда означает выход с рабочего стола. После завершения работы заблокируйте сессию и закройте конфиденциальные окна, которые больше не нужны.
На рабочих станциях Windows или Linux потребуется совместимый инструмент графического подключения. Разные клиенты могут по-разному поддерживать сочетания клавиш, буфер обмена, цвета, масштабирование и несколько мониторов — сначала проверьте их на неконфиденциальной задаче.
Выберите клиент с поддержкой целевого протокола подключения, шифрования и пользовательского разрешения. Источник установки должен быть проверен командой, а версия — актуальной.
Сначала проверьте DNS, маршрутизацию и целевой порт, затем протестируйте графическую сессию. Корпоративный прокси, межсетевой экран на выходе и переключение между беспроводными сетями могут прервать сессию.
Сначала выполните проверку с одним монитором и средним разрешением, затем постепенно увеличивайте размер изображения. При чёрном экране или обрезанном изображении вернитесь к меньшему разрешению и установите сессию заново.
Подключение подходит для повседневного процесса, если ввод стабилен, логи читаются, основные сочетания клавиш работают правильно, а сессию можно безопасно завершить. Если задачу можно полностью автоматизировать, выбирайте SSH или CI Runner.
Runner должен использовать отдельную учётную запись, отдельный рабочий каталог и ограниченный токен. Сначала запустите минимальный тестовый конвейер, затем добавляйте сборку с подписью, кэширование и архивирование.
Разделите исходный код, кэш зависимостей, промежуточные файлы сборки и конечные артефакты, чтобы задать правила очистки и отслеживать использование диска.
Токен должен разрешать только целевой репозиторий и необходимые операции. Не используйте личный токен доступа повторно и не записывайте токен в репозиторий или вывод сборки.
Назначайте метки по версии Xcode, типу проекта, модели устройства или нагрузке, чтобы несовместимые задачи не запускались в неподходящей среде.
Сначала проверьте зависимости и запустите модульные тесты, затем выполните архивирование. При сбое сохраните необходимые логи, но не загружайте безусловно весь каталог пользователя.
После подтверждения загрузки артефактов в целевое хранилище удалите временные учётные данные, временную связку ключей, устаревший кэш и ненужные каталоги сборки.
set -euo pipefail
WORK_DIR="$HOME/ci-work/project"
RESULT_DIR="$HOME/ci-results"
mkdir -p "$WORK_DIR" "$RESULT_DIR"
cd "$WORK_DIR"
git fetch --prune
git checkout "$CI_COMMIT_REF"
xcodebuild \
-scheme "$CI_SCHEME" \
-destination "generic/platform=iOS" \
test
xcodebuild \
-scheme "$CI_SCHEME" \
-archivePath "$RESULT_DIR/App.xcarchive" \
archive
find "$WORK_DIR" -name "*.tmp" -delete
Для каждого права доступа должны быть указаны ответственный, назначение и срок действия. Общие учётные записи без владельца, токены репозитория и временные файлы постепенно лишают фиксированную среду сборки возможности аудита.
Каждый сопровождающий должен использовать отдельный ключ. При уходе участника из проекта удалите соответствующий открытый ключ, не затрагивая доступ остальных.
Даже при необходимости общей среды разделяйте личный вход и автоматизированные учётные записи. Не используйте повседневную учётную запись администратора для Runner.
Ведите журнал ротации токенов репозитория, токенов регистрации Runner и временных учётных данных; своевременно удаляйте просроченные токены.
Задачам сборки предоставляйте доступ только к необходимым репозиториям и веткам. Для загрузки артефактов и чтения исходного кода можно использовать разные учётные данные.
Перед уходом с рабочего стола заблокируйте сессию, закройте окна с конфиденциальными данными и очистите ненужное содержимое буфера обмена.
После завершения задачи удалите временные закрытые ключи, одноразовые токены, временные связки ключей и больше не используемые файлы авторизации.
Не меняйте подряд пароль, адрес и клиент в надежде на случайный успех. Сначала запишите тип ошибки, время, локальную сеть, узел и способ подключения, затем выполните соответствующую проверку.
| Симптом | Сначала проверить | Действие | Приложить к обращению в поддержку |
|---|---|---|---|
| Тайм-аут подключения | Адрес узла, локальная сеть, правила выхода, целевой порт | Переключитесь на доверенную сеть; проверьте доступность порта; убедитесь, что не используется старый адрес | Время, узел, тип сети клиента, обезличенный результат проверки |
| Ошибка аутентификации | Имя пользователя, путь к ключу, права файла, обновлены ли учётные данные | Используйте подробный лог SSH, чтобы определить выбранный ключ; проверьте открытый ключ в списке разрешённых | Строка ошибки, имя пользователя, отпечаток ключа; не прикладывайте закрытый ключ или полный пароль |
| Изменение отпечатка хоста | Менялся ли адрес узла, пересоздавался ли экземпляр или изменялся ли локальный псевдоним | Прекратите подключение; повторно сверьте отпечаток в консоли; после подтверждения обновите запись | Узел, старый и новый отпечатки, время первого обнаружения |
| Чёрный экран графической сессии | Заблокирована ли сессия, разрешение дисплея, совместимость клиента | Снизьте разрешение; установите сессию заново; проверьте состояние системы через SSH | Система клиента, версия клиента, настройки дисплея и обезличенный снимок экрана |
| Неправильное разрешение | Масштабирование клиента, режим нескольких мониторов, размер окна | Вернитесь к одному монитору и среднему разрешению, затем поочерёдно восстановите настройки | Ожидаемое и фактическое разрешение, коэффициент масштабирования, тип клиента |
| Частые разрывы сессии | Переключение беспроводной сети, прокси, политика простоя, нестабильность канала | Используйте стабильную сеть; настройте поддержание SSH-соединения; перенесите длительные задачи в постоянную сессию | Частота разрывов, длительность, изменения сети и относящиеся к проблеме фрагменты логов |
nc -vz <node-address> 22
route -n get <node-address>
ssh -vvv zonemini-build 2>&1 | tee ssh-debug.log
Укажите номер заказа, один из вариантов ZoneMini M4 Core / ZoneMini M4 Plus / ZoneMini M4 Pro, узел, время возникновения, способ подключения, шаги воспроизведения, ожидаемый результат и обезличенные логи. Не загружайте закрытые ключи сертификатов, токены репозитория или полные пароли.
Подготовьте назначение, число параллельных задач, необходимый объём памяти, целевой узел и срок аренды. Данные подключения по текущему заказу доступны в консоли; вопросы по настройке можно сначала проверить в справочном центре.