Résolution des problèmes de connexion pour un hôte de build Xamarin.iOS
Ce guide fournit des étapes de résolution des problèmes qui peuvent être rencontrés à l’aide du nouveau gestionnaire de connexions, notamment les problèmes de connectivité et SSH.
Emplacement du fichier journal
-
Mac –
~/Library/Logs/Xamarin.Messaging-[VERSION.BUILD]
-
Windows –
%LOCALAPPDATA%\Xamarin\Logs
Les fichiers journaux peuvent se trouver en accédant à Aide > Xamarin > Zip Logs dans Visual Studio.
Où se trouve l’application hôte de build Xamarin ?
L’hôte de build Xamarin des anciennes versions de Xamarin.iOS n’est plus nécessaire. Visual Studio déploie désormais automatiquement l’agent via la connexion à distance et l’exécute en arrière-plan. Il n’existe aucune application supplémentaire qui s’exécutera sur les ordinateurs Mac ou Windows.
Résolution des problèmes de connexion à distance
Important
Ces étapes de résolution des problèmes sont principalement destinées aux problèmes qui se produisent lors de la configuration initiale sur un nouveau système. Si vous utilisiez la connexion avec succès dans un environnement particulier, puis que la connexion s'arrête soudainement ou par intermittence, vous pouvez (dans la plupart des cas) passer directement à la vérification de si l'une des solutions suivantes vous est utile :
- Supprimez les processus résiduels, comme décrit ci-dessous sous Erreurs en raison des processus de l'hôte de build existants.
- Effacez les agents comme décrit dans Effacement des agents Broker, IDB, Build et Designer, puis utilisez une connexion Internet câblée et connectez-vous directement via l’adresse IP, comme décrit sous Impossible de se connecter à MacBuildHost.local. Réessayez..
Si aucune de ces options ne résout le problème, suivez les instructions de étape 9 pour déposer un nouveau rapport de bogue.
Vérifiez que vous avez installé les versions compatibles de Xamarin.iOS sur votre Mac. Pour ce faire avec Visual Studio 2017, assurez-vous que vous êtes sur le canal de distribution Stable dans Visual Studio pour Mac. Dans Visual Studio 2015 et versions antérieures, assurez-vous que vous êtes sur le même canal de distribution sur les deux IDEs.
- Dans Visual Studio pour Mac, accédez à Visual Studio pour Mac > Rechercher les mises à jour... pour afficher ou modifier le canal de mise à jour .
- Dans Visual Studio 2015 et versions antérieures, vérifiez le canal de distribution sous Tools > Options > Xamarin > Autres.
Vérifiez que connexion à distance est activée sur le Mac. Définissez l’accès pour seuls ces utilisateurs, et vérifiez que votre utilisateur Mac est inclus dans la liste ou le groupe :
Vérifiez que votre pare-feu autorise les connexions entrantes via le port 22 : la valeur par défaut pour SSH :
Si vous avez désactivé Autoriser automatiquement les logiciels signés à recevoir des connexions entrantes, OS X présente une boîte de dialogue pendant le processus de jumelage demandant d’autoriser
mono-sgen
oumono-sgen32
à recevoir des connexions entrantes. Veillez à cliquer sur Autoriser dans cette boîte de dialogue :Vérifiez que vous êtes connecté au compte d’utilisateur sur ce Mac et que vous disposez d’une session d’interface utilisateur utilisateur active.
Vérifiez que vous vous connectez au Mac avec le nom d’utilisateur plutôt que le nom complet . Cela évite une limitation connue pour les noms complets qui incluent des caractères accentués.
Vous trouverez votre de nom d’utilisateur en exécutant la commande
whoami
dans Terminal.app.Par exemple, dans la capture d’écran ci-dessous, le nom du compte est zoed et non Zoe Drakou:
Vérifiez que l’adresse IP que vous utilisez pour mac est correcte. Vous trouverez l’adresse IP sous Réglages Système > Partage > Connexion à Distance sur le Mac.
Une fois que vous avez confirmé l’adresse IP du Mac, essayez un
ping
vers cette adresse danscmd.exe
sur Windows :ping 10.1.8.95
Si le test ping échoue, le Mac n’est pas routable à partir de l’ordinateur Windows. Ce problème doit être résolu au niveau de la configuration du réseau local entre les 2 ordinateurs. Vérifiez que les deux machines se trouvent sur le même réseau local.
Ensuite, testez si le client
ssh
à partir d’OpenSSH peut se connecter correctement au Mac à partir de Windows. L’une des façons d’installer ce programme consiste à installer Git pour Windows. Vous pouvez ensuite démarrer une invite de commandes Git Bash et tenter dessh
dans le Mac avec votre nom d’utilisateur et votre adresse IP :ssh zoed@10.1.8.95
Si étape 8 réussit, vous pouvez essayer d’exécuter une commande simple comme
ls
sur la connexion :ssh zoed@10.1.8.95 'ls'
Cela doit répertorier le contenu de votre répertoire de base sur le Mac. Si la commande
ls
fonctionne correctement, mais que la connexion Visual Studio échoue toujours, vous pouvez vérifier la section Problèmes connus et limitations concernant les complications spécifiques à Xamarin. Si aucun de ces cas ne correspond à votre situation, envoyez un nouveau rapport de bogue dans la Communauté des développeurs en accédant à Aide > Envoyer des commentaires > Signaler un problème dans Visual Studio et joignez les journaux décrits sous Vérifier les fichiers de journalisation détaillés.Si étape 8 échoue, vous pouvez exécuter la commande suivante dans Terminal sur le Mac pour voir si le serveur SSH accepte des connexions :
ssh localhost
Si l’étape 8 échoue mais que étape 10 réussit, le problème est probablement que le port 22 sur l’hôte de build Mac n’est pas accessible à partir de Windows en raison de la configuration réseau. Les problèmes de configuration possibles sont les suivants :
Les paramètres du pare-feu OS X ne permettent pas la connexion. Veillez à vérifier l’étape 3.
Parfois, la configuration par application du pare-feu OS X peut également se retrouver dans un état non valide où les paramètres affichés dans Préférences système ne reflètent pas le comportement réel. La suppression du fichier de configuration (/Library/Preferences/com.apple.alf.plist) et le redémarrage de l’ordinateur peuvent aider à restaurer le comportement par défaut. Une façon de supprimer le fichier consiste à entrer /Library/Preferences sous Go > Go to Folder in Finder, puis déplacer le fichier com.apple.alf.plist vers la Corbeille.
Les paramètres de pare-feu de l’un des routeurs entre mac et l’ordinateur Windows bloquent la connexion.
Windows lui-même interdit les connexions sortantes au port distant 22. Ce serait inhabituel. Il est possible de configurer le Pare-feu Windows pour interdire les connexions sortantes, mais le paramètre par défaut consiste à autoriser toutes les connexions sortantes.
L’hôte de build Mac interdit l’accès au port 22 de tous les hôtes externes via une règle de
pfctl
. Cela est peu probable, sauf si vous savez que vous avez configurépfctl
dans le passé.
Si l’étape 8 échoue et 'étape 10 échoue, le problème est probablement que le processus du serveur SSH sur le Mac n’est pas en cours d’exécution ou n’est pas configuré pour permettre à l’utilisateur actuel de se connecter. Dans ce cas, veillez à vérifier les paramètres de connexion à distance à partir de l’étape 2 avant d’examiner les possibilités plus complexes.
Problèmes connus et limitations
Note
Cette section s’applique uniquement si vous êtes déjà connecté à l’hôte de build Mac avec votre nom d’utilisateur et mot de passe Mac à l’aide du client SSH OpenSSH, comme indiqué dans les étapes 8 et 9 ci-dessus.
« Informations d’identification non valides. Veuillez réessayer.
Causes connues :
- Limitation : Cette erreur peut apparaître lorsque vous tentez de vous connecter à l’hôte de build à l’aide du compte Nom Complet si le nom inclut un caractère accentué. Il s’agit d’une limitation de la bibliothèque de SSH.NET que Xamarin utilise pour la connexion SSH. Solution de contournement: consultez l’étape 5 ci-dessus.
« Impossible de s’authentifier avec des clés SSH. Essayez d’abord de vous connecter avec les informations d’identification .
Cause connue :
-
restriction de sécurité SSH – ce message signifie le plus souvent que l’un des fichiers ou répertoires dans le chemin complet d'$HOME/.ssh/authorized_keys sur le Mac dispose d’autorisations d’écriture activées pour d’autres ou membres de groupe.
correctif courant: Exécuter
chmod og-w "$HOME"
dans une invite de commande Terminal sur le Mac. Pour plus d’informations sur le fichier ou le répertoire particulier à l’origine du problème, exécutezgrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
dans terminal, puis ouvrez le fichier sshd.log à partir de votre Bureau et recherchez « Authentification refusée : mauvaise propriété ou modes ».
« Essayer de se connecter… ne se termine jamais »
- Bug – Ce problème peut survenir sur Xamarin 4.1 si le shell de connexion dans le menu contextuel Options avancées pour l'utilisateur Mac dans Préférences Système > Utilisateurs & Groupes est défini sur une valeur autre que /bin/bash. (À compter de Xamarin 4.2, ce scénario conduit plutôt au message d’erreur « Impossible de se connecter ». solution de contournement: remplacez l’interpréteur de commandes de connexion par défaut d’origine de /bin/bash.
« Impossible de se connecter à MacBuildHost.local. Veuillez réessayer.
Causes signalées :
bogue : quelques utilisateurs ont vu ce message d’erreur avec une erreur plus détaillée dans les fichiers journaux « Une erreur inattendue s’est produite lors de la configuration de SSH pour l’utilisateur ... L’opération de session a expiré » lors de la tentative de connexion à l’hôte de build à l’aide d’un compte d’utilisateur de domaine de service Active Directory ou d’autres services d’annuaire. Solution de contournement : connectez-vous à l’hôte de build à l’aide d’un compte d’utilisateur local à la place.
bogue : certains utilisateurs ont vu cette erreur lors de la tentative de connexion au serveur de compilation en double-cliquant le nom du Mac dans la boîte de dialogue de connexion. Solution de contournement possible: ajouter manuellement le Mac en utilisant l’adresse IP.
bogue : certains utilisateurs ont rencontré cette erreur lors de l’utilisation d’une connexion réseau sans fil entre l’hôte de build Mac et Windows. Solution de contournement possible: déplacez les deux ordinateurs vers une connexion réseau câblée.
bogue : sur Xamarin 4.0, ce message s’affiche à tout moment lorsque le fichier $HOME/.bashrc sur le Mac contient une erreur. (À compter de Xamarin 4.1, les erreurs dans le fichier .bashrc n’affectent plus le processus de connexion.) solution de contournement: déplacez le fichier .bashrc vers un emplacement de sauvegarde (ou supprimez-le si vous savez que vous n’en avez pas besoin).
Cette erreur peut s’afficher si l'interpréteur de commandes de connexion dans le menu contextuel Options avancées pour l'utilisateur d'un Mac dans Préférences système > Utilisateurs & Groupes est défini sur une valeur autre que /bin/bash. solution de contournement: remplacez l’interpréteur de commandes de connexion par défaut d’origine de /bin/bash.
Limitation : Cette erreur peut s’afficher si l’hôte de build Mac est connecté à un routeur qui n’a pas accès à Internet (ou si le Mac utilise un serveur DNS qui expire lorsqu'on demande une recherche DNS inversée de l’ordinateur Windows). Visual Studio prendra environ 30 secondes pour récupérer l’empreinte digitale SSH et échouera finalement à se connecter.
Solution de contournement possible: ajoutez « UseDNS non » au fichier sshd_config. Veillez à en savoir plus sur ce paramètre SSH avant de le modifier. Consultez l’exemple unix.stackexchange.com/questions/56941/what-is-the-point-of-sshd-usedns-option.
Les étapes suivantes décrivent une façon de modifier le paramètre. Vous devez être connecté à un compte d’administrateur sur le Mac pour effectuer les étapes.
Confirmez l’emplacement du fichier sshd_config en exécutant
ls /etc/ssh/sshd_config
etls /etc/sshd_config
dans une invite de commandes terminal. Pour toutes les étapes restantes, veillez à utiliser l’emplacement qui ne pas renvoyer « Aucun fichier ou répertoire de ce type ».Exécutez
cp /etc/ssh/sshd_config "$HOME/Desktop/"
dans Terminal pour copier le fichier sur votre bureau.Ouvrez le fichier à partir de votre Bureau dans un éditeur de texte. Par exemple, vous pouvez exécuter
open -a TextEdit "$HOME/Desktop/sshd_config"
dans Terminal.Ajoutez la ligne suivante en bas du fichier :
UseDNS no
Supprimez les lignes qui disent
UseDNS yes
pour vous assurer que le nouveau paramètre prend effet.Enregistrez le fichier.
Exécutez
sudo cp "$HOME/Desktop/sshd_config" /etc/ssh/sshd_config
dans le Terminal pour copier le fichier modifié à son emplacement d'origine. Entrez votre mot de passe si vous y êtes invité.Désactivez et réactivez Connexion à distance sous Préférences Système > Partage > Connexion à Distance pour redémarrer le serveur SSH.
Effacement des agents Broker, IDB, Build et Designer sur mac
Si vos fichiers journaux présentent un problème pendant les étapes « Installation », « Chargement » ou « Démarrage » de l’un des agents Mac, vous pouvez essayer de supprimer le dossier de cache XMA pour forcer Visual Studio à les recharger.
Exécutez la commande suivante dans Terminal sur mac :
open "$HOME/Library/Caches/Xamarin"
Ctrl-clic sur le dossier XMA, puis sélectionnez Déplacer vers la corbeille:
Il y a également un cache sur Windows, qu'il peut être utile de vider. Ouvrez une invite de commandes en tant qu'Administrateur sur Windows :
del %localappdata%\Temp\Xamarin\XMA
Messages d’avertissement
Cette section décrit quelques messages qui peuvent apparaître dans les fenêtres de sortie et les journaux que vous pouvez généralement ignorer.
« Il existe une incompatibilité entre l’installation de Xamarin.iOS ... et Xamarin.iOS local
Tant que vous avez confirmé que Mac et Windows sont mis à jour vers le même canal de distribution Xamarin, cet avertissement est ignoré.
« Échec de l’exécution de 'ls /usr/bin/mono' : ExitStatus=1 »
Ce message est ignoré tant que le Mac exécute OS X 10.11 (El Capitan) ou version ultérieure. Ce message n’est pas un problème sur OS X 10.11, car Xamarin vérifie également /usr/local/bin/mono, qui est l’emplacement attendu correct pour mono
sur OS X 10.11.
« Le service Bonjour 'MacBuildHost' n’a pas répondu avec son adresse IP. »
Ce message est ignoré, sauf si vous remarquez que la boîte de dialogue de connexion n’affiche pas l’adresse IP de l’hôte de build Mac. Si l'adresse IP est manquante dans cette boîte de dialogue, vous pouvez toujours ajouter manuellement l'adresse MAC.
« Utilisateur non valide de 10.1.8.95 » et « input_userauth_request : utilisateur non valide a [préauth] »
Vous pourriez remarquer ces messages si vous consultez le sshd.log. Ces messages font partie du processus de connexion normal. Ils apparaissent parce que Xamarin utilise temporairement le nom d'utilisateur comme lors de la récupération de l’empreinte digitale SSH .
Fenêtre de sortie et fichiers journaux
Si Visual Studio rencontre une erreur lors de la connexion à l’hôte de build, il existe 2 emplacements pour rechercher des messages supplémentaires : la fenêtre Sortie et les fichiers journaux.
Fenêtre de sortie
La fenêtre Sortie est le meilleur endroit pour démarrer. Il affiche des messages sur les principales étapes et erreurs de connexion. Pour afficher les messages Xamarin dans la fenêtre Sortie :
- Sélectionnez Afficher > Sortie dans les menus ou cliquez sur l’onglet Sortie.
- Cliquez sur le Afficher la sortie dans menu déroulant.
- Sélectionnez Xamarin.
Fichiers journaux
Si la fenêtre Sortie n’inclut pas suffisamment d’informations pour diagnostiquer le problème, les fichiers journaux sont l’endroit suivant à rechercher. Les fichiers journaux contiennent des messages de diagnostic supplémentaires qui n’apparaissent pas dans la fenêtre Sortie. Pour afficher les fichiers journaux :
Démarrez Visual Studio.
Important
Notez que .svclogs ne sont pas activés par défaut. Pour y accéder, vous devez démarrer Visual Studio avec des journaux détaillés, comme expliqué dans le guide journaux d’activité de version. Pour plus d’informations, consultez le blog Dépannage des extensions avec le journal d’activité.
Essayez de vous connecter à l’hôte de build.
Une fois que Visual Studio rencontre l’erreur de connexion, collectez les journaux à partir de Aide > Xamarin > Zip Logs:
Lorsque vous ouvrez le fichier .zip, vous verrez une liste de fichiers similaires à l’exemple ci-dessous. Pour les erreurs de connexion, les fichiers les plus importants sont les fichiers *Ide.log et *Ide.svclog. Ces fichiers contiennent les mêmes messages dans deux formats légèrement différents. Le .svclog est XML et est utile si vous souhaitez parcourir les messages. Le .log est un texte brut et est utile si vous souhaitez filtrer les messages à l’aide d’outils en ligne de commande.
Pour parcourir tous les messages, sélectionnez et ouvrez le fichier .svclog :
Le fichier .svclog s’ouvre dans Microsoft Service Trace Viewer. Vous pouvez parcourir les messages par thread pour afficher les groupes de messages associés. Pour parcourir par fil, sélectionnez d'abord l'onglet Graph, puis cliquez sur le menu déroulant du mode de disposition et sélectionnez Fil:
Fichiers journaux détaillés
Si les fichiers journaux normaux ne fournissent toujours pas suffisamment d’informations pour diagnostiquer le problème, une dernière technique à essayer consiste à activer la journalisation détaillée. Les journaux détaillés sont également préférés dans les rapports de bogues.
Quittez Visual Studio.
Exécutez la commande suivante dans l’invite de commandes pour lancer Visual Studio avec une journalisation détaillée :
devenv /log
Essayez de vous connecter à l’hôte de build à partir de Visual Studio.
Une fois que Visual Studio a rencontré l’erreur de connexion, collectez les journaux à partir de Aide > Xamarin > Zip Logs.
Exécutez la commande suivante dans Terminal sur mac pour copier les messages de journal récents du serveur SSH dans un fichier sur votre Bureau :
grep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
Si ces fichiers journaux détaillés ne fournissent pas suffisamment d’indices pour résoudre le problème directement, veuillez déposer un nouveau rapport de bogue et joindre à la fois le fichier .zip de l’étape 5 et le fichier .log de l’étape 6.
Résolution des problèmes d’approvisionnement automatique de Mac
Fichiers journaux IDE
Si vous rencontrez des problèmes lors de l’utilisation de l'approvisionnement automatique Mac , examinez les journaux de l'IDE Visual Studio 2017, stockés dans %LOCALAPPDATA%\Xamarin\Logs\15.0.
Résolution des erreurs de génération et de déploiement
Cette section traite de quelques problèmes qui peuvent se produire une fois que Visual Studio se connecte correctement à l’hôte de build.
« Impossible de se connecter à Address='192.168.1.2:22' avec User='macuser' »
Causes connues :
fonctionnalité de sécurité Xamarin 4.1 : cette erreur se produit si vous passez à Xamarin 4.0 après avoir utilisé Xamarin 4.1 ou version ultérieure. Dans ce cas, l’erreur est accompagnée de l’avertissement supplémentaire « Clé privée est chiffrée, mais la phrase secrète est vide ». Il s’agit d’un changement intentionnel en raison d’une nouvelle fonctionnalité de sécurité dans Xamarin 4.1. correctif recommandé: supprimez id_rsa et id_rsa.pub de %LOCALAPPDATA%\Xamarin\MonoTouch, puis reconnectez-vous à l’hôte de build Mac.
restriction de sécurité SSH : lorsque ce message est accompagné de l’avertissement supplémentaire « Impossible d’authentifier l’utilisateur à l’aide des clés SSH existantes », cela signifie le plus souvent l’un des fichiers ou répertoires dans le chemin complet de $HOME/.ssh/authorized_keys sur le Mac dispose d’autorisations d’écriture activées pour d’autres ou groupe membres. correctif courant: Exécuter
chmod og-w "$HOME"
dans l'invite de commande du terminal sur le Mac. Pour plus d’informations sur le fichier ou le répertoire particulier à l’origine du problème, exécutezgrep sshd /var/log/system.log > "$HOME/Desktop/sshd.log"
dans terminal, puis ouvrez le fichier sshd.log à partir de votre Bureau et recherchez « Authentification refusée : mauvaise propriété ou modes ».
Les solutions ne peuvent pas être chargées à partir d’un partage réseau
Les solutions sont compilées uniquement si elles se trouvent sur le système de fichiers Windows local ou sur un lecteur mappé.
Les solutions enregistrées dans un partage réseau peuvent générer des erreurs ou refuser complètement de compiler. Tous les fichiers .sln utilisés dans Visual Studio doivent être enregistrés sur le système de fichiers Windows local.
L’erreur suivante est générée en raison de ce problème :
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.
Profils d’approvisionnement manquants ou erreur « Échec de la création d’une bibliothèque de graisse »
Lancez Xcode sur mac et vérifiez que votre compte de développeur Apple est connecté et que votre profil de développement iOS est téléchargé :
« Une opération de socket a été effectuée sur un réseau inaccessible »
Causes signalées :
- Amélioration : cette erreur peut empêcher les builds réussies lorsque Visual Studio utilise une adresse IPv6 pour se connecter à l’hôte de build. (La connexion de l’hôte de build ne prend pas encore en charge les adresses IPv6.)
Le plug-in Visual Studio Xamarin.iOS ne parvient pas à se charger après la réinstallation du canal bêta/alpha
Ce problème peut se produire lorsque Visual Studio ne parvient pas à actualiser le cache du composant MEF. Si c’est le cas, l’installation de cette extension Visual Studio peut vous aider à : https://visualstudiogallery.msdn.microsoft.com/22b94661-70c7-4a93-9ca3-8b6dd45f47cd
Cela efface le cache du composant VISUAL Studio MEF pour résoudre les problèmes d’altération du cache.
Erreurs dues aux processus hôtes de construction existants sur le Mac
Les processus des connexions hôtes de build précédentes peuvent parfois interférer avec le comportement de la connexion active actuelle. Pour rechercher les processus existants, fermez Visual Studio, puis exécutez les commandes suivantes dans Terminal sur le Mac :
ps -A | grep mono
Pour tuer les processus existants, utilisez la commande suivante :
killall mono
Effacement du cache de build Mac
Si vous résolvez un problème de build et que vous souhaitez vous assurer que le comportement n’est lié à aucun des fichiers de build temporaires stockés sur le Mac, vous pouvez supprimer le dossier du cache de build.
Exécutez la commande suivante dans Terminal sur mac :
open "$HOME/Library/Caches/Xamarin"
Cliquez avec la touche Control sur le dossier mtbs et sélectionnez Déplacer vers la corbeille: