Устранение неполадок подключения для узла сборки Xamarin.iOS
В этом руководстве приводятся инструкции по устранению неполадок, которые могут возникнуть при использовании нового диспетчера подключений, в том числе неполадок с подключением и протоколом SSH.
Расположение файла журнала
- Mac —
~/Library/Logs/Xamarin.Messaging-[VERSION.BUILD]
- Windows —
%LOCALAPPDATA%\Xamarin\Logs
Файлы журнала можно найти, последовательно выбрав в Visual Studio пункты Справка > Xamarin > Запаковать журналы.
Где приложение Xamarin Build Host?
Приложение Xamarin Build Host из предыдущих версий Xamarin.iOS больше не требуется. Visual Studio теперь автоматически развертывает агент посредством удаленного входа и запускает его в фоновом режиме. Ни на компьютере Mac, ни на компьютере Windows дополнительные приложения не выполняются.
Устранение неполадок удаленного входа
Внимание
Эти инструкции в первую очередь предназначены для решения проблем, возникающих во время начальной настройки новой системы. Если вы ранее успешно использовали соединения в конкретной среде, а теперь они полностью или периодически перестают работать, вы можете (в большинстве случаев) сразу перейти к проверке следующих методов решения проблемы.
- Прекратите работу всех оставшихся процессов, как описано ниже в разделе Ошибки, связанные с существующими хост-процессами сборки.
- Очистите агенты, как описано в разделе "Очистка брокера, IDB, сборки и конструктора агентов", а затем используйте проводное подключение к Интернету и подключитесь непосредственно через IP-адрес, как описано в разделе "Не удалось подключиться к MacBuildHost.local". Повторите попытку.
Если ни одно из этих действий не устраняет проблему, следуйте инструкциям в шаге 9, чтобы отправить отчет об ошибке.
Убедитесь в том, что на компьютере Mac установлены совместимые версии Xamarin.iOS. В случае с Visual Studio 2017 для этого следует проверить, используется ли канал распространения Стабильный в Visual Studio для Mac. В Visual Studio 2015 и более ранних версиях следует проверить, используется ли один и тот же канал распространения в обеих интегрированных средах разработки.
- В Visual Studio для Mac перейдите к Visual Studio для Mac > Проверьте наличие Обновления..., чтобы просмотреть или изменить канал обновления.
- В Visual Studio 2015 и более ранних версиях проверка канал распространения в разделе "Параметры > инструментов>" Xamarin > Other.
Проверьте, включена ли на компьютере Mac функция Удаленный вход. Разрешите доступ Только этим пользователям и убедитесь в том, что ваш пользователь Mac включен в список или группу:
Проверьте в брандмауэре, разрешены ли входящие подключения через порт 22 (порт по умолчанию для протокола SSH):
Если параметр Автоматически разрешать подписанному ПО входящие подключения отключен, во время связывания в системе OS X будет появляться диалоговое окно с запросом, следует ли разрешить программе
mono-sgen
илиmono-sgen32
принимать входящие подключения. В этом диалоговом окне необходимо нажать кнопку Разрешить:Убедитесь, что на компьютере Mac выполнен вход в учетную запись пользователя и запущен сеанс работы с графическим пользовательским интерфейсом.
Используйте для подключения к компьютеру Mac имя пользователя, а не полное имя. Это позволит избежать известного ограничения, касающегося полных имен, в которых есть символы с диакритическими знаками.
Чтобы узнать свое имя пользователя, можно выполнить команду
whoami
в Terminal.app.Например, на приведенном ниже снимке экрана имя учетной записи будет amyb, а не Amy Burns:
Проверьте правильность IP-адреса, используемого для компьютера Mac. IP-адрес можно найти в разделе "Системные настройки > общего доступа > к удаленному входу " на Компьютере Mac.
Подтвердив IP-адрес компьютера Mac, попробуйте выполнить запрос
ping
к этому адресу в программеcmd.exe
в Windows:ping 10.1.8.95
Если проверка связи завершилась неудачно, значит, возможность маршрутизации от компьютера Windows к компьютеру Mac отсутствует. Эту проблему необходимо решить на уровне конфигурации локальной сети между двумя компьютерами. Оба компьютера должны быть в одной локальной сети.
Далее проверьте, может ли клиент
ssh
из набора OpenSSH успешно подключиться к компьютеру Mac из Windows. Один из способов установить эту программу — установить Git для Windows. Затем можно открыть окно командной строки Git Bash и попытаться выполнить командуssh
с указанием имени пользователя и IP-адреса для подключения к компьютеру Mac:ssh amyb@10.1.8.95
Если шаг 8 завершился успешно, можно попытаться выполнить простую команду, такую как
ls
, через подключение:ssh amyb@10.1.8.95 'ls'
Она должна вывести список содержимого домашнего каталога на компьютере Mac. Если команда
ls
работает правильно, но подключение к Visual Studio по-прежнему не удается установить, можно обратиться к разделу Известные проблемы и ограничения за сведениями о проблемах, характерных для Xamarin. Если ни одна из них не соответствует вашей проблеме, отправьте новый отчет об ошибке на Сообщество разработчиков, перейдя в раздел "Справка > по отправке отзывов>" в Visual Studio и вложив журналы, описанные в разделе "Подробные файлы журналов".Если шаг 8 завершается неудачно, можно выполнить следующую команду в приложении Terminal на компьютере Mac, чтобы узнать, принимает ли сервер SSH какие-либо подключения:
ssh localhost
Если шаг 8 завершается неудачно, а шаг 10 — успешно, проблема, скорее всего, в том, что порт 22 на узле сборки Mac недоступен из Windows из-за конфигурации сети. Ниже перечислены возможные проблемы конфигурации:
Параметры брандмауэра OS X запрещают подключение. Еще раз проверьте шаг 3.
Иногда конфигурация брандмауэра OS X для отдельного приложения может приводить к недопустимому состоянию, при котором параметры в программе "Системные настройки" не соответствуют фактической ситуации. Чтобы восстановить поведение по умолчанию, можно удалить файл конфигурации (/Library/Preferences/com.apple.alf.plist) и перезагрузить компьютер. Один из способов удалить этот файл — ввести путь /Library/Preferences в поле Переход > Переход к папке в программе Finder, а затем переместить файл com.apple.alf.plist в Корзину.
Заданные в брандмауэре параметры одного из маршрутизаторов между компьютерами Mac и Windows блокируют подключение.
Исходящие подключения к удаленному порту 22 запрещены в самой системе Windows. Это необычная ситуация. В брандмауэре Windows можно запретить исходящие подключения, но по умолчанию они разрешены.
Узел сборки Mac запрещает доступ к порту 22 из всех внешних узлов посредством правила
pfctl
. Это маловероятно, если только вы не настраивали правилоpfctl
в прошлом.
Если шаги 8 и 10 завершаются неудачно, проблема, скорее всего, в том, что процесс сервера SSH на компьютере Mac не запущен или не разрешает вход текущего пользователя в систему. В этом случае еще раз проверьте параметры удаленного входа из шага 2, прежде чем переходить к более сложным причинам.
Известные проблемы и ограничения
Примечание.
Сведения в этом разделе применимы только в том случае, если вы уже успешно подключились к узлу сборки Mac с указанием имени пользователя и пароля Mac с помощью клиента SSH из набора OpenSSH, как указано в шагах 8 и 9 выше.
"Недопустимые учетные данные. Повторите попытку".
Известные причины:
- Ограничение — эта ошибка может возникнуть при попытке войти на узел сборки с помощью полного имени учетной записи, если в нем есть символ с диакритическим знаком. Это ограничение библиотеки SSH.NET, которая применяется в Xamarin для SSH-подключений. Обходной путь: см. шаг 5 выше.
"Не удалось выполнить проверку подлинности с помощью ключей SSH. Сначала попытайтесь войти, используя учетные данные"
Известная причина:
- Ограничение безопасности SSH. Это сообщение чаще всего означает, что один из файлов или каталогов в полном пути $HOME/.ssh/authorized_keys на компьютере Mac имеет разрешения на запись для других участников или участников группы . Обычное исправление: выполните команду
chmod og-w "$HOME"
в окне командной строки Terminal на компьютере Mac. Чтобы узнать, какой именно файл или каталог вызывает проблему, выполните командуgrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
в приложении Terminal, а затем откройте файл sshd.log на компьютере и найдите запись "Authentication refused: bad ownership or modes" (Проверка подлинности отклонена: неправильное владение или режимы).
Сообщение "Попытка подключения..." не пропадает
- Ошибка. Эта проблема может произойти в Xamarin 4.1, если оболочка входа в контекстном меню расширенных параметров для пользователя Mac в системных настройках > и группах имеет значение, отличное от /bin/bash. (Начиная с Xamarin 4.2 этот сценарий приводит к сообщению об ошибке "Не удалось подключиться". Обходной путь. Измените оболочкувхода обратно на исходное значение по умолчанию /bin/bash.
"Не удалось подключиться к MacBuildHost.local. Повторите попытку".
Известные причины:
Ошибка — несколько пользователей видели это сообщение об ошибке вместе с более подробной ошибкой в файлах журнала "Произошла непредвиденная ошибка при настройке SSH для пользователя ... Время ожидания операции сеанса истекло при попытке войти в узел сборки с помощью учетной записи пользователя домена службы каталогов Active Directory или другой учетной записи пользователя домена службы каталогов. Обходной путь: для входа на узел сборки используйте вместо этого локальную учетную запись пользователя.
Ошибка — у некоторых пользователей эта ошибка возникала при попытке подключиться к узлу сборки, дважды щелкнув имя компьютера Mac в диалоговом окне подключения. Возможное решение: добавьте компьютер Mac вручную, указав IP-адрес.
Ошибка . Некоторые пользователи столкнулись с этой ошибкой при использовании беспроводного сетевого подключения между узлом сборки Mac и Windows. Возможное решение: установите между компьютерами проводное соединение.
Ошибка . В Xamarin 4.0 это сообщение появится в любое время, когда файл $HOME/.bashrc на Компьютере Mac содержит ошибку. (Начиная с Xamarin 4.1 ошибки в файле bashrc больше не повлияют на процесс подключения.) Обходной путь. Переместите файл bashrc в расположение резервной копии (или удалите его, если вы знаете, что это не требуется).
Ошибка. Эта ошибка может появиться, если оболочка входа в контекстном меню расширенных параметров для пользователя Mac в системных параметрах > и группах имеет значение, отличное от /bin/bash. Обходной путь: измените значение параметра Оболочка входа на исходное значение по умолчанию /bin/bash.
Ограничение — эта ошибка может возникнуть, если узел сборки Mac подключен к маршрутизатору без доступа к Интернету (или если компьютер Mac использует DNS-сервер, при направлении к которому запроса на обратный поиск компьютера Windows в DNS истекает время ожидания). Visual Studio потребуется приблизительно 30 секунд для получения отпечатка SSH, и в конечном итоге подключение установить не удастся.
Возможное решение: добавьте "UseDNS no" в файл sshd_config . Перед изменением этого параметра SSH обязательно ознакомьтесь с его назначением, например на странице по адресу unix.stackexchange.com/questions/56941/what-is-the-point-of-sshd-usedns-option.
Ниже описывается один из способов изменения этого параметра. Для выполнения этих действий необходимо войти на компьютер Mac, используя учетную запись администратора.
Подтвердите расположение файла sshd_config , выполнив
ls /etc/ssh/sshd_config
иls /etc/sshd_config
в командной строке терминала. При выполнении дальнейших инструкций используйте расположение, которое не возвращает результат "Нет такого файла или каталога".Выполните команду
cp /etc/ssh/sshd_config "$HOME/Desktop/"
в программе Terminal, чтобы скопировать файл на рабочий стол.Откройте файл с рабочего стола в текстовом редакторе. Например, можно выполнить в программе Terminal команду
open -a TextEdit "$HOME/Desktop/sshd_config"
.Добавьте следующую строку в конец файла:
UseDNS no
Удалите все строки с текстом
UseDNS yes
, чтобы новый параметр вступил в силу.Сохраните файл.
Выполните в программе Terminal команду
sudo cp "$HOME/Desktop/sshd_config" /etc/ssh/sshd_config
, чтобы скопировать измененный файл в прежнее место. Если необходимо, введите пароль.Отключите, а затем повторно включите параметр Удаленный вход в окне Системные настройки > Общий доступ > Удаленный вход, чтобы перезапустить сервер SSH.
Удаление агентов Broker, IDB, сборки и конструктора на компьютере Mac
Если в файлах журнала есть указания на проблемы на этапах установки, отправки или запуска каких-либо агентов Mac, можно попытаться удалить папку кэша XMA, чтобы агенты были отправлены в Visual Studio повторно.
В программе Terminal на компьютере Mac выполните следующую команду:
open "$HOME/Library/Caches/Xamarin"
Щелкните папку XMA, удерживая нажатой клавишу CONTROL, и выберите команду Переместить в Корзину:
В Windows также есть кэш, который может быть полезно очистить. Откройте в Windows командную строку как администратор:
del %localappdata%\Temp\Xamarin\XMA
Предупреждающие сообщения
В этом разделе описывается ряд сообщений в окнах вывода и журналах, которые обычно можно игнорировать.
"Платформа Xamarin.iOS... не соответствует локальной платформе Xamarin.iOS"
Если вы убедились в том, что как на компьютере Mac, так и на компьютере Windows используется один и тот же канал распространения Xamarin, это предупреждение можно игнорировать.
"Не удалось выполнить "ls /usr/bin/mono": ExitStatus=1"
Это сообщение можно игнорировать, если на компьютере Mac используется OS X 10.11 (El Capitan) или более поздней версии. В системе OS X 10.11 это сообщение не свидетельствует о проблеме, так как платформа Xamarin также проверяет путь /usr/local/bin/mono, который является ожидаемым расположением программы mono
в OS X 10.11.
"Служба Bonjour "MacBuildHost" не ответила со своим IP-адресом."
Это сообщение можно игнорировать, кроме случаев, когда в диалоговом окне подключения не отображается IP-адрес узла сборки Mac. Если IP-адрес в этом диалоговом окне отсутствует, вы все же можете добавить компьютер Mac вручную.
"Недопустимый пользователь с 10.1.8.95" и "input_userauth_request: недопустимый пользователь [предварительная проверка подлинности]"
Эти сообщения можно увидеть в файле sshd.log. Они появляются в рамках стандартного процесса подключения. Причина в том, что платформа Xamarin временно использует имя пользователя a при получении отпечатка SSH.
Окно вывода и файлы журнала
Если при подключении к узлу сборки в Visual Studio возникает ошибка, дополнительные сообщения можно найти в двух местах: окне вывода и файлах журнала.
Окно вывода
Лучше всего начать с окна вывода. В нем выводятся сообщения об основных этапах подключения и ошибках. Чтобы просмотреть сообщения Xamarin в окне вывода, выполните указанные ниже действия:
- Выберите "Вид > выходных данных " в меню или перейдите на вкладку "Вывод ".
- Откройте раскрывающееся меню Показать выходные данные из.
- Выберите пункт Xamarin.
Файлы журнала
Если в окне вывода недостаточно информации для диагностики проблемы, далее следует обратиться к файлам журнала. Файлы журнала содержат дополнительные диагностические сообщения, которые не отображаются в окне вывода. Чтобы просмотреть файлы журнала, выполните указанные ниже действия:
Запустите среду Visual Studio.
Внимание
Обратите внимание на то, что файлы .svclogs не включены по умолчанию. Для доступа к ним необходимо запустить Visual Studio с подробным ведением журнала, как описывается в руководстве Журналы версий. Дополнительные сведения см. в записи блога Troubleshooting Extensions with the Activity Log (Устранение неполадок расширений с помощью журнала действий).
Попытайтесь подключиться к узлу сборки.
После того как Visual Studio достигнет ошибки подключения, соберите журналы из журналов справки >Xamarin > ZIP:
Когда вы откроете файл ZIP, вы увидите список файлов, как в примере ниже. Для ошибок подключения наиболее важными являются файлы *Ide.log и *Ide.svclog . Эти файлы содержат одни и те же сообщения в двух немного разных форматах. Файл SVCLOG содержит данные в формате XML и полезен для просмотра сообщений. Файл LOG содержит обычный текст и полезен для фильтрации сообщений с помощью программ командной строки.
Для просмотра всех сообщений выберите и откройте файл SVCLOG:
Файл SVCLOG откроется в программе Microsoft Service Trace Viewer. Сообщения можно группировать в потоки для просмотра связанных сообщений. Для просмотра по потокам выберите вкладку Диаграмма и в раскрывающемся меню Режим макета выберите пункт Поток:
Подробное ведение журнала
Если в обычных файлах журнала все же недостаточно сведений для диагностики проблемы, последнее средство — включить подробное ведение журнала. Сведения из подробных журналов также желательно включать в отчеты об ошибках.
Выйдите из Visual Studio.
Запустите Командную строку разработчика.
Чтобы запустить Visual Studio с подробным ведением журнала, выполните в командной строке следующую команду:
devenv /log
Попытайтесь подключиться к узлу сборки из Visual Studio.
После того как Visual Studio достигнет ошибки подключения, соберите журналы из журналов справки >Xamarin > ZIP.
В программе Terminal на компьютере Mac выполните следующую команду, чтобы скопировать все недавние сообщения журнала с сервера SSH в файл на рабочем столе:
grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
Если в файлах подробного журнала недостаточно прямых указаний для решения проблемы, отправьте отчет о новой ошибке и вложите в него как файл ZIP из шага 5, так и файл LOG из шага 6.
Устранение неполадок автоматической подготовки Mac
Файлы журналов IDE
Если у вас возникают проблемы с автоматической подготовкой компьютера Mac, просмотрите журналы IDE Visual Studio 2017 по пути %LOCALAPPDATA%\Xamarin\Logs\15.0.
Устранение ошибок сборки и развертывания
В этом разделе рассматривается ряд проблем, которые могут возникать после успешного подключения Visual Studio к узлу сборки.
"Не удается подключиться к адресу=192.168.1.2:22 с помощью пользователя=macuser"
Известные причины:
Функция безопасности Xamarin 4.1 — эта ошибка возникает при переходе на Xamarin 4.0 с Xamarin 4.1 или более поздней версии. В этом случае ошибка сопровождается дополнительным предупреждением "Закрытый ключ зашифрован, но парольная фраза пуста". Это намеренное изменение из-за новой функции безопасности в Xamarin 4.1. Рекомендуемое исправление: удалите id_rsa и id_rsa.pub из %LOCALAPPDATA%\Xamarin\MonoTouch, а затем снова подключитесь к узлу сборки Mac.
Ограничение безопасности SSH. Если это сообщение сопровождается дополнительным предупреждением "Не удалось пройти проверку подлинности пользователя с помощью существующих ключей SSH", это чаще всего означает один из файлов или каталогов в полном пути $HOME/.ssh/authorized_keys на Компьютере Mac имеет разрешения на запись для других участников или участников группы . Обычное исправление: выполните команду
chmod og-w "$HOME"
в окне командной строки Terminal на компьютере Mac. Чтобы узнать, какой именно файл или каталог вызывает проблему, выполните командуgrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
в приложении Terminal, а затем откройте файл sshd.log на компьютере и найдите запись "Authentication refused: bad ownership or modes" (Проверка подлинности отклонена: неправильное владение или режимы).
Решения невозможно загружать из сетевой папки
Решения будут компилироваться, только если они находятся в локальной файловой системе Windows или на подключенном диске.
Решения, сохраненные в сетевой папке, могут вызывать ошибки или не компилироваться вообще. Все файлы SLN, используемые в Visual Studio, должны сохраняться в локальной файловой системе Windows.
Из-за этой проблемы возникает следующая ошибка:
error : Building from a network share path is not supported at the moment. Please map a network drive to '\\SharedSources\HelloWorld\HelloWorld' or copy the source to a local directory.
Отсутствуют профили подготовки или ошибка "Failed to create the a fat library" (Не удалось создать толстую библиотеку)
Запустите Xcode на компьютере Mac и убедитесь в том, что выполнен вход в учетную запись разработчика Apple и профиль разработки iOS скачан:
"Попытка доступа к недействующей сети при выполнении операции над сокетом"
Известные причины:
- Усовершенствование . Эта ошибка может предотвратить успешные сборки, если Visual Studio использует IPv6-адрес для подключения к узлу сборки. (Для подключения к узлу сборки адреса IPv6 пока не поддерживаются.)
Подключаемый модуль Xamarin.iOS для Visual Studio не загружается после повторной установки канала бета- или альфа-версии
Эта проблема может происходить, когда среде Visual Studio не удается обновить кэш компонентов MEF. В этом случае может помочь установка этого расширения Visual Studio: https://visualstudiogallery.msdn.microsoft.com/22b94661-70c7-4a93-9ca3-8b6dd45f47cd
Оно очищает кэш компонентов MEF Visual Studio для устранения проблем, связанных с его повреждением.
Ошибки из-за существующих процессов узла сборки на компьютере Mac
Процессы, связанные с предыдущими подключениями к узлу сборки, иногда могут мешать работе текущего активного подключения. Чтобы проверить наличие существующих процессов, закройте Visual Studio, а затем выполните следующие команды в программе Terminal на компьютере Mac:
ps -A | grep mono
Чтобы завершить существующие процессы, выполните следующую команду:
killall mono
Очистка кэша сборки Mac
Если вы устраняете неполадку сборки и хотите убедиться в том, что она не связана с временными файлами сборки, хранящимися на компьютере Mac, вы можете удалить папку кэша сборки.
В программе Terminal на компьютере Mac выполните следующую команду:
open "$HOME/Library/Caches/Xamarin"
Щелкните папку mtbs, удерживая нажатой клавишу CONTROL, и выберите команду Переместить в Корзину: