Je souhaite installer l’environnement HBase pseudo-distribué sur mon Mac OS Sierra (10.12.4). Ssh doit être installé et peut se connecter avec ssh localhost
sans mot de passe. Mais parfois, je rencontrais des erreurs lorsque j'utilisais ssh
pour me connecter. Avant tout, la question est de fond et la question est de savoir où puis-je trouver les journaux de débogage de sshd
afin de savoir pourquoi l'échec de la journalisation échoue?
Comme je le sais, sshd
est déjà installé dans Mac OS et utilise launchd
pour le gérer. Je connais un moyen de générer les journaux de débogage par sshd -E /var/log/sshd.log
, mais lorsque j’ai révisé la configuration /etc/ssh/sshd_config
et qu’il existe deux lignes:
#SyslogFacility AUTH
#LogLevel INFO
Je suppose que ces deux lignes sont utilisées pour configurer le mode de débogage, puis j'ai supprimé #
avant eux et défini LogLevel
sur DEBUG3
, puis redémarré sshd
:
$ launchctl unload -w /System/Library/LaunchDaemons/ssh.plist
$ launchctl load -w /System/Library/LaunchDaemons/ssh.plist
Et puis j'ai défini le chemin du journal dans /etc/syslog.conf
:
auth.*<tab>/var/log/sshd.log
<tab>
signifie ici le caractère de tabulation et a rechargé la configuration:
$ killall -HUP syslogd
Mais le fichier sshd.log
ne peut pas être trouvé dans le dossier /var/log
lorsque j'ai exécuté ssh localhost
. J'ai aussi essayé de configurer le /etc/asl.log
:
> /var/log/sshd.log format=raw
? [= Facility auth] file sshd.log
Et le résultat était le même, quelqu'un peut-il m'aider?
Vous pouvez le trouver dans /var/log/system.log. Mieux vaut filtrer par "sshd":
cat /var/log/system.log | grep sshd
J'avais également un problème ssh que je souhaitais déboguer davantage et je ne pouvais pas trouver comment faire en sorte que les journaux de débogage sshd apparaissent à l'un des emplacements habituels. J'ai eu recours à l'édition du fichier /System/Library/LaunchDaemons/ssh.plist
pour ajouter un paramètre -E <log file location>
(/tmp/sshd.log, par exemple). J'ai également édité /etc/ssh/sshd_config
pour changer le LogLevel. Avec ces modifications, j'ai pu afficher les journaux les plus détaillés dans le fichier journal spécifié.
Comme je n'ai pas beaucoup d'expérience avec MacOS, je suis certain qu'il existe un moyen plus correct de le configurer, mais faute d'une meilleure approche, les journaux que je cherchais ont été obtenus.
Essaye ça
cp /System/Library/LaunchDaemons/ssh.plist /Library/LaunchDaemons/ssh.plist
Ensuite
vi /Library/LaunchDaemons/ssh.plist
Et ajoutez votre -E comme indiqué ci-dessous
<array>
<string>/usr/sbin/sshd</string>
<string>-i</string>
<string>-E</string>
<string>/var/log/system.log</string>
</array>
Et enfin, redémarrez sshd. Vous verrez maintenant les journaux sshd dans /var/log/system.log.
launchctl unload/System/Library/LaunchDaemons/ssh.plist && launchctl load -w /Library/LaunchDaemons/ssh.plist
Selon le site Web developer de Apple , le comportement de journalisation a changé dans macOS 10.12 et versions supérieures:
Important:
La journalisation unifiée est disponible dans iOS 10.0 et versions ultérieures, macOS 10.12 et versions ultérieures, tvOS 10.0 et versions ultérieures, et watchOS 3.0 et versions ultérieures. Elle remplace ASL (Apple System Logger) et les API Syslog. Historiquement, les messages de journal étaient écrits dans des emplacements spécifiques sur le disque, tels que /etc/system.log. Le système de journalisation unifiée stocke les messages en mémoire et dans un magasin de données, plutôt que d'écrire dans des fichiers journaux à base de texte.
Malheureusement, à moins que quelqu'un ne trouve un moyen assez intelligent d'extraire les entrées de journal de la mémoire ou de ce mystérieux "magasin de données", je pense que nous sommes SOL: /
Comme à son habitude, Apple a décidé de réinventer la roue.
Dans la fenêtre du super-utilisateur
# log config --mode "level:debug" --subsystem com.openssh.sshd
# log stream --level debug 2>&1 | tee /tmp/logs.out
Dans une autre fenêtre
$ ssh localhost
$ exit
Retour dans la fenêtre du super-utilisateur
^C (interrupt)
# grep sshd /tmp/logs.out
2019-01-11 08:53:38.991639-0500 0x17faa85 Debug 0x0 37284 sshd: (libsystem_network.dylib) sa_dst_compare_internal <private>@0 < <private>@0
2019-01-11 08:53:38.992451-0500 0xb47b5b Debug 0x0 57066 socketfilterfw: (Security) [com.Apple.securityd:unixio] open(/usr/sbin/sshd,0x0,0x1b6) = 12
...
...
Dans la fenêtre du super-utilisateur, restaurez la journalisation sshd par défaut
# log config --mode "level:default" --subsystem com.openssh.sshd