1 votes

Logging pour SSHD quand il est lancé depuis Launchd avec l'option `-d` ?

Je travaille sur OS X 10.8.5, entièrement corrigé. J'ai un serveur OpenSSH mis à jour installé dans /usr/local/sbin écoutant sur le port 1522. Les tentatives de connexion donnent lieu à _ssh_exchange_identification: Connection closed by remote host_ . sudo grep 'sshd' /var/log/* 2>/dev/null au serveur ne renvoie presque rien, j'essaie donc de recueillir plus d'informations au serveur sur la cause.

Selon man sshd(8) , -d est en mode débogage et envoie une sortie de débogage verbeuse à l'erreur standard. J'ai ajouté -d a ProgramArguments dans la plist, mais la plist définit également les paramètres suivants StandardErrorPath a /dev/null . Je suppose donc que les informations de débogage sont rejetées.

J'ai vérifié launchctl(1) page de manuel, mais je ne vois pas ce que je dois faire pour modifier StandardErrorPath pour qu'il soit enregistré quelque part. La page de manuel ne parle même pas de la paire nom/valeur.

Comment dois-je modifier la configuration pour que la journalisation du débogage soit enregistrée quelque part, et que je sache où se trouve ce "quelque part" ?


$ cat /System/Library/LaunchDaemons/ssh-7.1.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <true/>
    <key>Label</key>
    <string>com.openssh.sshd-v7.1</string>
    <key>Program</key>
    <string>/usr/local/sbin/sshd</string>
    <key>ProgramArguments</key>
    <array>
        <string>-i -d</string>
    </array>
    <key>Sockets</key>
    <dict>
            <key>Listeners</key>
            <dict>
                    <key>SockServiceName</key>
                    <string>1522</string>
            </dict>
    </dict>
    <key>inetdCompatibility</key>
    <dict>
        <key>Wait</key>
        <false/>
    </dict>
    <key>StandardErrorPath</key>
    <string>/dev/null</string>
    <key>SHAuthorizationRight</key>
    <string>system.preferences</string>
</dict>
</plist>

2voto

Kevin Points 2479
  1. Pour ajouter le -d à sshd, il devrait être ajouté comme un nouvel élément au tableau :

    <string>-d</string>

    La section devrait ressembler à ceci :

    <key>ProgramArguments</key>
        <array>
            <string>-i</string>
            <string>-d</string>
        </array>
  2. Au lieu d'éditer directement les fichiers plist, vous pouvez utiliser /usr/libexec/PlistBuddy (-h pour afficher l'aide).

  3. Il existe un utilitaire script. ssh-util.rb qui peut activer ou désactiver l'enregistrement. Il fait partie de la OpenSSH-189 paquet trouvé à l'adresse suivante : opensource.apple.com.

    Lien vers ssh-util.rb

    Voici les commandes nécessaires à exécuter (telles que produites par le script ruby script) :

    /usr/bin/ruby ./ssh-util.rb -l on -v --debug --dryrun

    ou manuellement :

    sudo /usr/libexec/PlistBuddy -c "add :ProgramArguments:2 string '-ddd'" /System/Library/LaunchDaemons/ssh.plist
    sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
    sudo launchctl load /System/Library/LaunchDaemons/ssh.plist
    sudo touch /var/run/com.openssh.sshd-asl-enabled
  4. Une fois le débogage terminé, vous devrez exécuter l'un ou l'autre :

    /usr/bin/ruby ./ssh-util.rb -l off -v --debug --dryrun 

    ou manuellement :

    sudo /usr/libexec/PlistBuddy -c "Delete :ProgramArguments:2" /System/Library/LaunchDaemons/ssh.plist
    sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
    sudo launchctl load /System/Library/LaunchDaemons/ssh.plist
    sudo rm -f /var/run/com.openssh.sshd-asl-enabled

Notes sur la journalisation sous OS X

0 votes

Je pense que les informations de débogage seront toujours déconseillées parce que quelque chose doit être fait avec StandardErrorPath .

0 votes

La "magie" est faite dans la dernière ligne (création du fichier dans /var/run). Je viens d'activer la journalisation (via l'option ssh-util.rb script) et /var/log/sshd.log a été créé.

0 votes

Dans ma réponse, j'ai fait un lien vers "Notes on OS X Logging" . Regardez dans /etc/asl et jetez également un coup d'œil à /etc/asl.conf . (Le commentaire de @Jakuje concernant le syslog est correct).

0voto

Jakuje Points 1520

Pour que les événements de journalisation soient appropriés à partir de sshd vous ne devez pas définir -d swiches, puisqu'elle est réservée au débogage, mais vous devriez utiliser sshd_config (je ne sais pas où il se trouve dans OSX).

En sshd_config il y a une option LogLevel que vous pouvez ajuster en fonction de vos besoins, mais le niveau le plus détaillé est le suivant DEBUG3 qui vous donne de nombreuses informations utiles pour le débogage.

0 votes

Si je mets LogLevel=DEBUG3 alors ne sera-t-elle pas rejetée parce que StandardErrorPath=/dev/null ? (Désolé de devoir demander. Je n'ai pas l'habitude d'administrer OpenSSH. En général, il "fonctionne simplement").

0 votes

Il n'est pas enregistré sur stderr (du moins sur les autres *nix), il est enregistré à l'aide de syslog ou d'un autre enregistreur fourni par le système (généralement à l'aide de la commande /dev/log socket).

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X