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 au cours de l’utilisation 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 être localisés en accédant à Aide > Xamarin > Journaux Zip dans Visual Studio.
Où se trouve l’application hôte de build Xamarin ?
L’hôte de build Xamarin des versions antérieures de Xamarin.iOS n’est plus nécessaire. Visual Studio déploie maintenant automatiquement l’agent sur une session à distance et l’exécute en arrière-plan. Aucune application supplémentaire n’est exécutée sur le Mac ou les ordinateurs Windows.
Résolution des problèmes de sessions à distance
Important
Ces étapes de résolution de problèmes s’appliquent principalement aux problèmes qui se produisent pendant la configuration initiale sur un nouveau système. Si vous avez déjà utilisé la connexion avec succès dans un environnement particulier et que celle-ci ne fonctionne plus soudainement ou par intermittence, vous pouvez, dans la plupart des cas, passer directement à vérifier si l’un des points suivants peut vous aider à résoudre le problème :
- Arrêtez les processus restants comme décrit ci-dessous dans la section Erreurs dues à des processus hôtes de build existants.
- Effacez les agents comme décrit dans l’option Broker, IDB, Build et Designer Agents, 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. Veuillez réessayer..
Si aucune de ces options ne résout le problème, suivez les instructions de l’étape 9 pour envoyer un nouveau rapport de bogues.
Vérifiez que des versions compatibles de Xamarin.iOS sont installées sur votre Mac. Pour effectuer cette opération avec Visual Studio 2017, vérifiez que vous vous trouvez sur le canal de distribution Stable dans Visual Studio pour Mac. Dans Visual Studio 2015 et les versions antérieures, vérifiez que vous vous trouvez sur le même canal de distribution sur les deux IDE.
- Dans Visual Studio pour Mac, accédez à Visual Studio pour Mac > Rechercher Mises à jour... pour afficher ou modifier le canal de mise à jour.
- Dans Visual Studio 2015 et versions antérieures, case activée le canal de distribution sous Options > d’outils > Xamarin > Other.
Vérifiez que l’option Session à distante est activée sur le Mac. Choisissez Uniquement ces utilisateurs comme type d’accès, puis vérifiez que l’utilisateur de votre Mac est inclus dans la liste ou le groupe :
Vérifiez que votre pare-feu autorise les connexions entrantes via le port 22 (valeur par défaut pour SSH) :
Si vous avez désactivé Autoriser automatiquement les logiciels signés à recevoir des connexions entrantes, OS X affiche une boîte de dialogue pendant le processus de couplage, demandant d’autoriser
mono-sgen
oumono-sgen32
à recevoir des connexions entrantes. Cliquez sur Autoriser dans cette boîte de dialogue :Vérifiez que vous êtes connecté au compte d’utilisateur sur ce Mac et que vous avez une session d’interface graphique utilisateur active.
Veillez à vous connecter au Mac avec le nom d’utilisateur plutôt qu’avec le nom complet. Cela évite une limitation connue relative aux noms complets incluant des caractères accentués.
Pour trouver votre nom d’utilisateur, exécutez la commande
whoami
dans Terminal.app.Par exemple, dans la capture d’écran ci-dessous, le nom du compte sera amyb et non Amy Burns :
Vérifiez que l’adresse IP que vous utilisez pour le Mac est correcte. Vous trouverez l’adresse IP sous Préférences > système partageant > la connexion à distance sur le Mac.
Une fois que vous avez confirmé l’adresse IP du Mac, effectuez un test
ping
à 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 deux ordinateurs. Vérifiez que les deux ordinateurs se trouvent sur le même réseau local.
Effectuez ensuite un test pour savoir si le client
ssh
d’OpenSSH peut se connecter au Mac à partir de Windows. Une façon d’installer ce programme consiste à installer Git pour Windows. Vous pouvez ensuite démarrer une invite de commandes Git Bash et essayer une commandessh
sur le Mac avec votre nom d’utilisateur et votre adresse IP :ssh amyb@10.1.8.95
Si l’étape 8 réussit, vous pouvez essayer d’exécuter une commande simple comme
ls
via la connexion :ssh amyb@10.1.8.95 'ls'
Cette opération permet de 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 relative aux complications spécifiques à Xamarin. Si aucun de ces problèmes ne correspond à votre problème, envoyez un nouveau rapport de bogue sur la communauté des développeurs en accédant à l’aide de l’aide pour > envoyer des commentaires > signalez un problème dans Visual Studio et joignez les journaux décrits sous Vérifier les fichiers journaux détaillés.Si l’étape 8 échoue, vous pouvez exécuter la commande suivante dans Terminal sur le Mac pour voir si le serveur SSH accepte toutes les connexions :
ssh localhost
Si l’étape 8 échoue mais que l’é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 du réseau. Les problèmes de configuration possibles sont les suivants :
Les paramètres de pare-feu OS X interdisent la connexion. Vérifier soigneusement l’étape 3.
Parfois, la configuration par application pour le pare-feu OS X peut également finir dans un état non valide dans lequel les paramètres affichés dans les 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 permettre de restaurer le comportement par défaut. Une façon de supprimer le fichier consiste à entrer /Library/Preferences sous Atteindre >Atteindre le dossier dans 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 le Mac et l’ordinateur Windows bloquent la connexion.
Windows lui-même interdit les connexions sortantes vers le port distant 22. Cela 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 à partir de tous les hôtes externes à l’aide d’une règle
pfctl
. Cela est peu probable, sauf si vous savez que vous avez configurépfctl
dans le passé.
Si l’étape 8 échoue et que l’étape 10 échoue également, il est probable que le processus du serveur SSH sur le Mac n’est pas en cours d’exécution ou n’est pas configuré pour autoriser l’utilisateur actuel à se connecter. Dans ce cas, veillez à vérifier soigneusement les paramètres de session à distance définis à l’étape 2 avant d’examiner des possibilités plus complexes.
Problèmes connus et limitations
Remarque
Cette section s’applique uniquement si vous vous êtes déjà connecté avec succès à l’hôte de build Mac avec votre nom d’utilisateur et mot de passe Mac à l’aide du client SSH OpenSSH, comme indiqué aux étapes 8 et 9 ci-dessus.
« Informations d’identification non valides. Réessayez. »
Causes connues :
- Limitation : Cette erreur peut survenir lors d’une tentative de connexion à l’hôte de build à l’aide du nom complet du compte si ce nom comprend un caractère accentué. Il s’agit d’une limitation de la bibliothèque SSH.NET que Xamarin utilise pour la connexion SSH. Solution de contournement : Voir l’étape 5 ci-dessus.
« Authentification impossible avec des clés SSH. Essayez d’abord de vous connecter avec des informations d’identification »
Cause connue :
- Restriction de sécurité SSH : ce message signifie le plus souvent que l’un des fichiers ou répertoires du chemin complet de $HOME/.ssh/authorized_keys sur le Mac dispose d’autorisations d’écriture activées pour d’autres membres du groupe. Correctif courant : Exécutez
chmod og-w "$HOME"
dans une invite de commandes Terminal sur le Mac. Pour plus d’informations sur le fichier ou 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 « Authentication refused: bad ownership or modes » (Authentification refusée : propriété ou modes incorrects).
« Tentative de connexion... » ne s’arrête jamais
- Bogue : ce problème peut se produire sur Xamarin 4.1 si l’interpréteur de commandes de connexion dans le menu contextuel Options avancées pour l’utilisateur Mac dans les préférences > système utilisateurs et 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.
« Connexion impossible à MacBuildHost.local. Réessayez. »
Causes signalées :
Bogue : quelques utilisateurs ont vu ce message d’erreur ainsi qu’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 d’une tentative de connexion à l’hôte de build en double-cliquant sur le nom du Mac dans la boîte de dialogue de connexion. Solution de contournement possible : Ajoutez manuellement le Mac à l’aide de 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 sur 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).
Bogue : cette erreur peut apparaître si l’interpréteur de commandes de connexion dans le menu contextuel Options avancées de l’utilisateur Mac dans les préférences > système utilisateurs et groupes est défini sur une valeur autre que /bin/bash. Solution de contournement : Rétablissez la valeur par défaut d’origine /bin/bash pour l’environnement de démarrage.
Limitation : Cette erreur peut survenir 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 quand la recherche DNS inversée de l’ordinateur Windows est demandée). Visual Studio met environ 30 secondes pour récupérer l’empreinte digitale SSH et risque de ne pas parvenir à se connecter.
Solution de contournement possible : ajoutez « UseDNS non » au fichier sshd_config . Veillez à lire les informations relatives à ce paramètre SSH avant de le modifier. Par exemple, consultez unix.stackexchange.com/questions/56941/what-is-the-point-of-sshd-usedns-option.
Les étapes suivantes décrivent une façon de changer le paramètre. Vous devez être connecté à un compte administrateur sur le Mac pour les effectuer.
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 retourne pas « 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 au bas du fichier :
UseDNS no
Supprimez toutes les lignes qui indiquent
UseDNS yes
pour garantir que le nouveau paramètre prend effet.Enregistrez le fichier.
Exécutez
sudo cp "$HOME/Desktop/sshd_config" /etc/ssh/sshd_config
dans 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 la Session à distance sous Préférences Système > Partage > Session à distance pour redémarrer le serveur SSH.
Désactivation des agents Broker, IDB, de build et Designer sur le Mac
Si vos fichiers journaux indiquent un problème lors des étapes « Installation », « Chargement » ou « Démarrage » pour n’importe lequel des agents de Mac, essayez de supprimer le dossier de cache XMA pour forcer Visual Studio à les charger à nouveau.
Exécutez la commande suivante dans Terminal sur le Mac :
open "$HOME/Library/Caches/Xamarin"
Cliquez sur le dossier XMA en maintenant la touche Ctrl enfoncée, puis sélectionnez Placer dans la Corbeille :
Il existe également un cache sur Windows qu’il peut être efficace de désactiver. 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 s’afficher dans les fenêtres et journaux de Sortie et que vous pouvez généralement ignorer.
« Il existe une incompatibilité entre la version installée de Xamarin.iOS ... et la version locale de Xamarin.iOS »
À partir du moment où vous avez vérifié que Mac et Windows sont tous les deux mis à jour avec le même canal de distribution Xamarin, cet avertissement peut être ignoré.
« Échec de l’exécution de 'ls /usr/bin/mono' : ExitStatus=1 »
Ce message peut être ignoré tant que le Mac exécute OS X 10.11 (El Capitan) ou une version plus récente. 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 peut être 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 ne figure pas dans cette boîte de dialogue, vous pouvez toujours ajouter le Mac manuellement.
« Utilisateur non valide de 10.1.8.95 » et « input_userauth_request : utilisateur non valide a [préauth] »
Vous pouvez remarquer ce message si vous consultez le fichier sshd.log. Ces messages font partie du processus de connexion normal. Ils s’affichent car Xamarin utilise temporairement le nom d’utilisateur a lors de la récupération de l’empreinte digitale SSH.
Fenêtre Sortie et fichiers journaux
Si Visual Studio rencontre une erreur lors de la connexion à l’hôte de build, il y a deux emplacements dans lesquels rechercher les messages supplémentaires : la fenêtre Sortie et les fichiers journaux.
Fenêtre Sortie
La fenêtre Sortie est le meilleur endroit pour commencer. Elle affiche des messages relatifs aux principales étapes et erreurs de connexion. Pour afficher les messages Xamarin dans la fenêtre Sortie :
- Sélectionnez Afficher > la sortie dans les menus ou cliquez sur l’onglet Sortie .
- Cliquez sur le menu déroulant Afficher la sortie à partir de.
- Sélectionnez Xamarin.
Fichiers journaux
Si la fenêtre Sortie n’inclut pas suffisamment d’informations pour diagnostiquer le problème, les fichiers journaux constituent l’emplacement suivant à consulter. Les fichiers journaux contiennent des messages de diagnostic supplémentaires qui n’apparaissent pas dans la fenêtre Sortie. Pour consulter les fichiers journaux :
Démarrez Visual Studio.
Important
Notez que les fichiers .svclogs ne sont pas activés par défaut. Pour y accéder, vous devez démarrer Visual Studio avec les journaux détaillés, comme expliqué dans le guide des journaux des versions. Pour plus d’informations, reportez-vous au blog Troubleshooting Extensions with the Activity Log.
Tentez de vous connecter à l’hôte de build.
Une fois que Visual Studio a atteint l’erreur de connexion, collectez les journaux d’activité à partir de l’aide des journaux zip Xamarin > :>
Quand vous ouvrez le fichier .zip, une liste de fichiers semblable à l’exemple ci-dessous s’affiche. 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 fichier.svclog est au format XML. Il est utile si vous voulez parcourir les messages. Le fichier .log est du texte brut. Il est utile si vous voulez 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 voir les groupes connexes de messages. Pour parcourir par thread, sélectionnez tout d’abord l’onglet Graphe, puis cliquez sur le menu déroulant Mode disposition et sélectionnez Thread :
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 privilégiés sur les rapports de bogue.
Quittez Visual Studio.
Démarrez une invite de commandes développeur.
Exécutez la commande suivante dans l’invite de commandes pour lancer Visual Studio avec la journalisation détaillée :
devenv /log
Tentez de vous connecter à l’hôte de build à partir de Visual Studio.
Une fois que Visual Studio a atteint l’erreur de connexion, collectez les journaux d’activité à partir de l’aide des journaux zip Xamarin>.>
Exécutez la commande suivante dans Terminal sur le Mac pour copier tous les messages de journal récents à partir 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, envoyez un nouveau rapport de bogue en joignant le fichier .zip de l’étape 5 et le fichier .log de l’étape 6.
Résolution des problèmes de provisionnement Mac automatique
Fichiers journaux IDE
Si vous rencontrez des problèmes d’utilisation du provisionnement Mac automatique, examinez les journaux IDE Visual Studio 2017, stockés dans %LOCALAPPDATA%\Xamarin\Logs\15.0.
Résolution des erreurs de build et de déploiement
Cette section aborde quelques problèmes qui peuvent se produire une fois Visual Studio correctement connecté à 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 revenez à la version antérieure Xamarin 4.0 après avoir utilisé Xamarin 4.1 ou une version ultérieure. Dans ce cas, l’erreur est associée à l’avertissement « La 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é de 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 généralement l’un des fichiers ou répertoires du chemin complet d '$HOME/.ssh/authorized_keys sur le Mac dispose d’autorisations d’écriture activées pour d’autres membres ou membres de groupe . Correctif courant : Exécutez
chmod og-w "$HOME"
dans une invite de commandes Terminal sur le Mac. Pour plus d’informations sur le fichier ou 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 « Authentication refused: bad ownership or modes » (Authentification refusée : propriété ou modes incorrects).
Impossible de charger des solutions à partir d’un partage réseau
Les solutions ne sont compilées que 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 lever des erreurs ou purement refuser de se 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 levé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 de provisionnement manquants ou erreur « Failed to create the a fat library »
Lancez Xcode sur le Mac, puis 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é tentée sur un réseau impossible à atteindre »
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 chargement du plug-in Xamarin.iOS Visual Studio échoue après la réinstallation d’un canal bêta/alpha
Ce problème peut se produire quand Visual Studio ne parvient pas à actualiser le cache du composant MEF. Si tel est le cas, il peut vous être utile d’installer cette extension de Visual Studio : https://visualstudiogallery.msdn.microsoft.com/22b94661-70c7-4a93-9ca3-8b6dd45f47cd.
Cette opération efface le cache du composant MEF Visual Studio pour résoudre les problèmes liés à l’endommagement du cache.
Erreurs dues à des processus hôtes de build existants sur le Mac
Des processus de connexions d’hôtes de build précédentes peuvent parfois interférer avec le comportement de la connexion active actuelle. Pour rechercher d’éventuels processus existants, fermez Visual Studio, puis exécutez les commandes suivantes dans Terminal sur le Mac :
ps -A | grep mono
Pour arrêter les processus existants, utilisez la commande suivante :
killall mono
Effacement du cache de build Mac
Si vous résolvez un problème de génération et que vous voulez être certain que le comportement n’est pas lié à 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 le Mac :
open "$HOME/Library/Caches/Xamarin"
Cliquez sur le dossier mtbs en maintenant la touche Ctrl enfoncée, puis sélectionnez Placer dans la Corbeille :