Felsökning av anslutning för en Xamarin.iOS-byggvärd
Den här guiden innehåller felsökningssteg för problem som kan uppstå med hjälp av den nya anslutningshanteraren, inklusive anslutningsproblem och SSH-problem.
Plats för loggfil
-
Mac –
~/Library/Logs/Xamarin.Messaging-[VERSION.BUILD]
-
Windows –
%LOCALAPPDATA%\Xamarin\Logs
Loggfilerna kan hittas genom att navigera till Hjälp > Xamarin > komprimerade loggar i Visual Studio.
Var är Xamarin Build-värdappen?
Xamarin Build Host från äldre versioner av Xamarin.iOS krävs inte längre. Visual Studio distribuerar nu automatiskt agenten via fjärrinloggning och kör den i bakgrunden. Det finns ingen ytterligare app som körs på mac- eller Windows-datorerna.
Felsöka fjärrinloggning
Viktig
De här felsökningsstegen är främst avsedda för problem som uppstår under den första installationen på ett nytt system. Om du tidigare har använt anslutningen i en viss miljö och anslutningen plötsligt eller tillfälligt slutar fungera kan du (i de flesta fall) gå direkt till att kontrollera om något av följande hjälper:
- Avsluta de överblivna processerna enligt beskrivningen under nedan Fel på grund av befintliga byggvärdprocesser.
- Rensa agenterna enligt beskrivningen i Rensa agenterna Broker, IDB, Build och Designeroch använd sedan en kabelansluten Internetanslutning och anslut direkt via IP-adressen enligt beskrivningen under Det gick inte att ansluta till MacBuildHost.local. Försök igen..
Om inget av dessa alternativ åtgärdar problemet följer du anvisningarna i steg 9 för att skapa en ny felrapport.
Kontrollera att du har kompatibla Xamarin.iOS-versioner installerade på din Mac. Om du vill göra detta med Visual Studio 2017 kontrollerar du att du är på distributionskanalen Stable i Visual Studio för Mac. I Visual Studio 2015 och tidigare kontrollerar du att du är på samma distributionskanal på båda IDE:erna.
- I Visual Studio för Mac går du till Visual Studio för Mac > Sök efter uppdateringar... för att visa eller ändra Update-kanalen.
- I Visual Studio 2015 och tidigare kontrollerar du distributionskanalen under Tools > Options > Xamarin > Other.
Kontrollera att fjärrinloggning är aktiverat på Mac-datorn. Ange åtkomst för Endast dessa användareoch kontrollera att Mac-användaren finns med i listan eller gruppen:
Kontrollera att brandväggen tillåter inkommande anslutningar via port 22 – standardinställningen för SSH:
Om du har inaktiverat Tillåt automatiskt att signerad programvara tar emot inkommande anslutningarkommer OS X att presentera en dialogruta under parkopplingsprocessen där du uppmanas att tillåta
mono-sgen
ellermono-sgen32
att ta emot inkommande anslutningar. Klicka på Tillåt i den här dialogrutan:Bekräfta att du är inloggad på användarkontot på mac-datorn och har en aktiv GUI-session.
Kontrollera att du ansluter till Mac-datorn med användarnamnet i stället för fullständigt namn. Detta undviker en känd begränsning för fullständiga namn som innehåller accenttecken.
Du hittar ditt användarnamn genom att köra kommandot
whoami
i Terminal.app.Från skärmbilden nedan visas till exempel kontonamnet zoed och inte Zoe Drakou:
Kontrollera att IP-adressen som du använder för Mac är korrekt. Du hittar IP-adressen under Systeminställningar > Delning > Fjärrinloggning på Mac.
När du har bekräftat IP-adressen till Mac, försök att skicka en
ping
till den adressen icmd.exe
på Windows.ping 10.1.8.95
Om ping misslyckas är Mac-datorn då inte åtkomlig från Windows-datorn. Det problemet måste lösas på nivån för nätverkskonfigurationen för det lokala nätverket mellan de två datorerna. Kontrollera att båda datorerna finns i samma lokala nätverk.
Testa sedan om den
ssh
klienten från OpenSSH kan ansluta till Mac från Windows. Ett sätt att installera det här programmet är att installera Git för Windows. Du kan sedan starta en Git Bash- kommandotolk och försökassh
logga in på Macen med ditt användarnamn och din IP-adress.ssh zoed@10.1.8.95
Om steg 8 lyckaskan du prova att köra ett enkelt kommando som
ls
via anslutningen:ssh zoed@10.1.8.95 'ls'
Detta bör visa innehållet i din hemkatalog på Mac-datorn. Om
ls
-kommandot fungerar korrekt men Visual Studio-anslutningen fortfarande misslyckas kan du kontrollera avsnittet Kända problem och begränsningar om komplikationer som är specifika för Xamarin. Om inget av dessa matchar ditt problem kan du skicka en ny felrapport i Utvecklarcommunityn genom att gå till Hjälp > Skicka feedback > Rapportera ett problem i Visual Studio och bifoga loggarna som beskrivs under Kontrollera utförliga loggfiler.Om steg 8 misslyckaskan du köra följande kommando i Terminal på Mac för att se om SSH-servern accepterar några anslutningar:
ssh localhost
Om steg 8 misslyckas men steg 10 lyckasär problemet troligtvis att port 22 på byggvärd för Mac inte är tillgänglig från Windows på grund av nätverkskonfigurationen. Möjliga konfigurationsproblem är:
Inställningarna för OS X-brandväggen tillåter inte anslutningen. Se till att dubbelkolla steg 3.
Ibland kan konfigurationen per app för OS X-brandväggen också hamna i ett ogiltigt tillstånd där inställningarna som visas i Systeminställningar inte återspeglar det faktiska beteendet. Om du tar bort konfigurationsfilen (/Library/Preferences/com.apple.alf.plist) och startar om datorn kan du återställa standardbeteendet. Ett sätt att ta bort filen är att ange /Library/Preferences under Go > Go to Folder in Finder och sedan flytta filen com.apple.alf.plist till papperskorgen.
Brandväggsinställningarna för en av routrarna mellan Mac och Windows-datorn blockerar anslutningen.
Själva Windows tillåter inte utgående anslutningar till fjärrport 22. Detta skulle vara ovanligt. Det går att konfigurera Windows-brandväggen så att utgående anslutningar inte tillåts, men standardinställningen är att tillåta alla utgående anslutningar.
Mac-byggvärden blockerar åtkomst till port 22 från alla externa värdar via en
pfctl
-regel. Detta är osannolikt om du inte vet att du har konfigureratpfctl
tidigare.
Om steg 8 misslyckas och steg 10 misslyckasär problemet troligtvis att SSH-serverprocessen på Mac inte körs eller inte har konfigurerats för att tillåta att den aktuella användaren loggar in. I det här fallet måste du dubbelkolla inställningarna för fjärrinloggning från steg 2 innan du undersöker några mer komplicerade möjligheter.
Kända problem och begränsningar
Not
Det här avsnittet gäller endast om du redan har anslutit till Mac Build-värden med ditt Användarnamn och lösenord för Mac med hjälp av OpenSSH SSH-klienten, enligt beskrivningen i steg 8 och 9 ovan.
"Ogiltiga autentiseringsuppgifter. Försök igen."
Kända orsaker:
- Begränsning – Det här felet kan visas när du försöker logga in på byggvärden med hjälp av kontot fullständigt namn om namnet innehåller ett accenttecken. Det här är en begränsning för SSH.NET-biblioteket som Xamarin använder för SSH-anslutningen. Lösning: Se steg 5 ovan.
"Det går inte att autentisera med SSH-nycklar. Försök att logga in med autentiseringsuppgifter först"
Känd orsak:
-
SSH-säkerhetsbegränsning – Det här meddelandet innebär oftast att en av filerna eller katalogerna i den fullständigt kvalificerade sökvägen för $HOME/.ssh/authorized_keys på Mac har skrivbehörigheter aktiverade för andra eller grupp medlemmar.
Common fix: Kör
chmod og-w "$HOME"
i en Terminal-kommandotolk på Mac. Om du vill ha mer information om vilken fil eller katalog som orsakar problemet kör dugrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
i Terminal och öppnar sedan filen sshd.log från skrivbordet och letar efter "Autentisering nekad: felaktigt ägarskap eller lägen".
"Försöker ansluta..." slutförs aldrig
- Bug – Det här problemet kan inträffa på Xamarin 4.1 om Inloggningsgränssnittet i snabbmenyn Avancerade alternativ för Mac-användaren i Systeminställningar > Användare & Grupper har angetts till ett annat värde än /bin/bash. (Från och med Xamarin 4.2 leder det här scenariot i stället till felmeddelandet "Det gick inte att ansluta".) Lösning: Ändra Inloggningsgränssnittet tillbaka till den ursprungliga standardinställningen för /bin/bash.
"Det gick inte att ansluta till MacBuildHost.local. Försök igen."
Rapporterade orsaker:
Bugg – Några användare har sett det här felmeddelandet tillsammans med ett mer detaljerat fel i loggfilerna "Ett oväntat fel uppstod när SSH konfigurerades för användaren ... Sessionsåtgärden har överskriden tidsgräns" när du försöker logga in på byggvärden med hjälp av ett Active Directory- eller annat användarkonto för katalogtjänstdomänen. Lösning: logga in på byggvärden med ett lokalt användarkonto i stället.
Bugg – Vissa användare har sett det här felet när de försöker ansluta till byggvärden genom att dubbelklicka på namnet på Mac i anslutningsdialogrutan. Möjlig lösning: Lägg till Mac- manuellt med hjälp av IP-adressen.
Bugg – Vissa användare har stött på det här felet när de använder en trådlös nätverksanslutning mellan Mac Build-värden och Windows. Möjlig lösning: Flytta båda datorerna till en kabelansluten nätverksanslutning.
Bug – På Xamarin 4.0 visas det här meddelandet varje gång filen $HOME/.bashrc på Mac innehåller ett fel. (Från och med Xamarin 4.1 påverkar fel i .bashrc-filen inte längre anslutningsprocessen.) Lösning: Flytta filen .bashrc till en säkerhetskopieringsplats (eller ta bort den om du vet att du inte behöver den).
Fel – Det här felet kan visas om Inloggningsgränssnittet i snabbmenyn Avancerade alternativ för Mac-användaren i Systeminställningar > Användare & Grupper har angetts till ett annat värde än /bin/bash. Lösning: Ändra Inloggningsgränssnittet tillbaka till den ursprungliga standardinställningen för /bin/bash.
Begränsning – Det här felet kan visas om Mac-byggvärden är ansluten till en router som inte har internetåtkomst (eller om Mac använder en DNS-server som slutar svara i tid när den uppmanas att göra en omvänd DNS-sökning av Windows-datorn). Visual Studio tar ungefär 30 sekunder att hämta SSH-fingeravtrycket och kan till slut inte ansluta.
Möjlig lösning: Lägg till "UseDNS nej" i filen sshd_config. Läs om den här SSH-inställningen innan du ändrar den. Titta till exempel på unix.stackexchange.com/questions/56941/what-is-the-point-of-sshd-usedns-option.
Följande steg beskriver ett sätt att ändra inställningen. Du måste vara inloggad på ett administratörskonto på Mac för att slutföra stegen.
Bekräfta platsen för sshd_config-filen genom att köra
ls /etc/ssh/sshd_config
ochls /etc/sshd_config
i terminalens kommandotolk. För alla återstående steg, se till att använda den plats som inte returnerar "Ingen sådan fil eller katalog".Kör
cp /etc/ssh/sshd_config "$HOME/Desktop/"
i Terminal för att kopiera filen till skrivbordet.Öppna filen från skrivbordet i en textredigerare. Du kan till exempel köra
open -a TextEdit "$HOME/Desktop/sshd_config"
i Terminal.Lägg till följande rad längst ned i filen:
UseDNS no
Ta bort alla rader som säger
UseDNS yes
för att se till att den nya inställningen börjar gälla.Spara filen.
Kör
sudo cp "$HOME/Desktop/sshd_config" /etc/ssh/sshd_config
i Terminal för att kopiera den redigerade filen på plats igen. Ange ditt lösenord om du uppmanas att göra det.Inaktivera och återaktivera fjärrinloggning under Systeminställningar > Delning > fjärrinloggning för att starta om SSH-servern.
Rensa agenterna Broker, IDB, Build och Designer på Mac
Om loggfilerna visar ett problem under stegen "Installera", "Ladda upp" eller "Starta" för någon av Mac-agenter kan du prova att ta bort mappen XMA cache för att tvinga Visual Studio att ladda upp dem igen.
Kör följande kommando i Terminal på Mac:
open "$HOME/Library/Caches/Xamarin"
Kontrollera och klicka på mappen XMA och välj Flytta till papperskorgen:
Det finns även en cache i Windows som kan hjälpa dig att rensa. Öppna en cmd-prompt som administratör i Windows:
del %localappdata%\Temp\Xamarin\XMA
Varningsmeddelanden
I det här avsnittet beskrivs några meddelanden som kan visas i utdatafönster och loggar som du vanligtvis kan ignorera.
"Det finns ett matchningsfel mellan den installerade Xamarin.iOS ... och den lokala Xamarin.iOS"
Så länge du har bekräftat att både Mac och Windows har uppdaterats till samma Xamarin-distributionskanal kan denna varning ignoreras.
"Det gick inte att köra 'ls /usr/bin/mono': ExitStatus=1"
Det här meddelandet kan inte ignoreras så länge Mac-datorn kör OS X 10.11 (El Capitan) eller senare. Det här meddelandet är inte ett problem på OS X 10.11 eftersom Xamarin även kontrollerar /usr/local/bin/mono, vilket är rätt förväntad plats för mono
på OS X 10.11.
"Bonjour-tjänsten "MacBuildHost" svarade inte med sin IP-adress."
Det här meddelandet kan ignoreras såvida du inte märker att anslutningsdialogrutan inte visar IP-adressen för Mac-byggdatorn. Om IP-adressen saknas i dialogrutan kan du fortfarande lägga till Mac-manuellt.
"Ogiltig användare a från 10.1.8.95" och "input_userauth_request: ogiltig användare a [preauth]"
Du kanske märker de här meddelandena om du tittar i sshd.log. Dessa meddelanden ingår i den normala anslutningsprocessen. De dyker upp därför att Xamarin tillfälligt använder användarnamnet och när man hämtar SSH Fingerprint.
Utdatafönster och loggfiler
Om Visual Studio stöter på ett fel när det ansluter till byggservern finns det två platser där du kan söka efter ytterligare meddelanden: utdatafönstret och loggfilerna.
Utdatafönster
Utdatafönstret är det bästa stället att börja på. Den visar meddelanden om de viktigaste anslutningsstegen och felen. Så här visar du Xamarin-meddelandena i utdatafönstret:
- Välj Visa > Utdata från menyerna eller klicka på fliken Utdata.
- Klicka på rullgardinsmenyn Visa utdata från.
- Välj Xamarin.
Loggfiler
Om utdatafönstret inte innehåller tillräckligt med information för att diagnostisera problemet är loggfilerna nästa plats att titta på. Loggfilerna innehåller ytterligare diagnostikmeddelanden som inte visas i utdatafönstret. Så här visar du loggfilerna:
Starta Visual Studio.
Viktig
Observera att .svclogs inte är aktiverade som standard. För att komma åt dem måste du starta Visual Studio med utförliga loggar enligt beskrivningen i Versionsloggar guiden. Mer information finns i Felsökningstillägg med-bloggen för aktivitetsloggen.
Försök att ansluta till byggvärden.
När Visual Studio har drabbats av anslutningsfelet samlar du in loggarna från Hjälp > Xamarin > Zip-loggar:
När du öppnar .zip-filen visas en lista över filer som liknar exemplet nedan. För anslutningsfel är de viktigaste filerna *Ide.log och *Ide.svclog filer. Dessa filer innehåller samma meddelanden i två lite olika format. Den .svclog- är XML och är användbar om du vill bläddra igenom meddelandena. .log är oformaterad text och är användbar om du vill filtrera meddelandena med hjälp av kommandoradsverktyg.
Om du vill bläddra igenom alla meddelanden väljer du och öppnar filen .svclog:
Filen .svclog öppnas i Microsoft Service Trace Viewer. Du kan bläddra bland meddelandena efter tråd för att se relaterade grupper av meddelanden. Om du vill bläddra efter tråd väljer du först fliken Graph och klickar sedan på listrutan layoutläge och väljer Tråd:
Utförliga loggfiler
Om de normala loggfilerna fortfarande inte ger tillräckligt med information för att diagnostisera problemet är en sista metod att prova att aktivera utförlig loggning. Utförliga loggar föredras också i felrapporter.
Avsluta Visual Studio.
Kör följande kommando i kommandotolken för att starta Visual Studio med utförlig loggning:
devenv /log
Försök ansluta till bygdservern från Visual Studio.
När Visual Studio har drabbats av anslutningsfelet samlar du in loggarna från Hjälp > Xamarin > Zip-loggar.
Kör följande kommando i Terminal på Mac för att kopiera eventuella senaste loggmeddelanden från SSH-servern till en fil på skrivbordet:
grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
Om dessa utförliga loggfiler inte ger tillräckligt med ledtrådar för att lösa problemet direkt kan du skapa en ny felrapport och bifoga både .zip-filen från steg 5 och filen .log från steg 6.
Felsöka automatisk Mac-etablering
IDE-loggfiler
Om du stöter på problem med att använda automatisk Mac-etableringkan du ta en titt på Visual Studio 2017 IDE-loggarna som lagras i %LOCALAPPDATA%\Xamarin\Logs\15.0.
Felsöka bygg- och distributionsfel
Det här avsnittet beskriver några problem som kan uppstå efter att Visual Studio har anslutit framgångsrikt till byggvärden.
"Det går inte att ansluta till Address='192.168.1.2:22' med User='macuser'"
Kända orsaker:
Xamarin 4.1-säkerhetsfunktionen – Det här felet kommer att inträffa om du nedgraderar till Xamarin 4.0 när du har använt Xamarin 4.1 eller senare. I det här fallet åtföljs felet av den ytterligare varningen "Privat nyckel är krypterad men lösenfrasen är tom". Detta är en avsiktlig ändring på grund av en ny säkerhetsfunktion i Xamarin 4.1. Rekommenderad korrigering: Ta bort id_rsa och id_rsa.pub från %LOCALAPPDATA%\Xamarin\MonoTouchoch återanslut sedan till Mac-build-värden.
SSH-säkerhetsbegränsning – När det här meddelandet åtföljs av den ytterligare varningen "Det gick inte att autentisera användaren med befintliga ssh-nycklar" innebär det oftast att en av filerna eller katalogerna i den fullständigt kvalificerade sökvägen $HOME/.ssh/authorized_keys på Mac har skrivbehörighet aktiverad för andra eller grupp medlemmar. Common fix: Kör
chmod og-w "$HOME"
i en Terminal-kommandotolk på Mac. Om du vill ha mer information om vilken fil eller katalog som orsakar problemet kör dugrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
i Terminal och öppnar sedan filen sshd.log från skrivbordet och letar efter "Autentisering nekad: felaktigt ägarskap eller lägen".
Det går inte att läsa in lösningar från en nätverksresurs
Lösningar kompileras endast om de finns på det lokala Windows-filsystemet eller en mappad enhet.
Lösningar som sparas i en nätverksresurs kan utlösa fel eller helt vägra att kompilera. Alla .sln filer som används i Visual Studio bör sparas i det lokala Windows-filsystemet.
Följande fel utlöses på grund av det här problemet:
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.
Provisioneringsprofiler saknas eller felet "Det gick inte att skapa ett fett bibliotek"
Starta Xcode på Mac och se till att ditt Apple-utvecklarkonto är loggat in och att din iOS-utvecklingsprofil laddas ned:
Ett socketförsök gjordes till ett nätverk som inte går att nå
Rapporterade orsaker:
- Enhancement – Det här felet kan förhindra lyckade byggen när Visual Studio använder en IPv6-adress för att ansluta till kompilatorvärden. (Byggvärdanslutningen har ännu inte stöd för IPv6-adresser.)
Xamarin.iOS Visual Studio-plugin misslyckas att ladda efter att beta-/alfakanalen har ominstallerats.
Det här problemet kan inträffa när Visual Studio inte kan uppdatera MEF-komponentcachen. Om så är fallet kan det vara till hjälp att installera det här Visual Studio-tillägget: https://visualstudiogallery.msdn.microsoft.com/22b94661-70c7-4a93-9ca3-8b6dd45f47cd
Detta rensar Visual Studio MEF-komponentcacheminnet för att åtgärda problem med cacheskada.
Fel på grund av de befintliga värdprocesserna för build på Mac
Processer från tidigare anslutningar kan ibland påverka den nuvarande aktiva anslutningens beteende. Om du vill söka efter befintliga processer stänger du Visual Studio och kör sedan följande kommandon i Terminal på Mac:
ps -A | grep mono
Om du vill avsluta de befintliga processerna använder du följande kommando:
killall mono
Rensa Mac Build Cache
Om du felsöker ett byggproblem och vill kontrollera att beteendet inte är relaterat till någon av de temporära byggfiler som lagras på Mac kan du ta bort mappen för byggcache.
Kör följande kommando i Terminal på Mac:
open "$HOME/Library/Caches/Xamarin"
Ctrl-klicka på mtbs mappen och välj Flytta till papperskorgen: