Pour effectuer des check_by_ssh avec Nagios, il faut au préalable procéder à l'échange de clés entre le serveur nagios et l'hôte supervisé.
Sur le serveur nagios, se placer dans le répertoire de départ de Nagios et entrer la commande suivante : Il faut être passé en utilisateur Nagios pour faire cette manip.
cd /usr/local/nagios mkdir .ssh ssh-keygen -b 2048 -t rsa
le terminal renvoie alors
Generating public/private rsa key pair. Enter file in which to save the key (/user/lcoal/nagios/.ssh/id_rsa):
Appuyer trois fois sur entrée pour valider la création de cette double clé public privé.
Ensuite, créer un répertoire ssh dans le répertoire de départ de la machine serveur distante si il n'existe pas gràce à la commande :
ssh user@serveur_distant "mkdir .ssh; chmod 0700 .ssh"
Enfin, envoyer la partie publique de la clé créée sur la machine locale avec
scp .ssh/id_rsa.pub user@machine_distante:.ssh/authorized_keys2
ATTENTION : Sous peine de se prendre des erreurs à la connexion, les autorisations sur les répertoires et fichiers doivent être strictement positionnés comme suit (à exécuter en tant que utilisateur nagios):
chmod go-w ~/ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Maintenant, l'utilisateur nagios peut se connecter à l'hôte à superviser sans mot de passe
# 'check_ssh_smtp' command definition
define command{
command_name check_ssh_smtp
command_line $USER1$/check_by_ssh -H $HOSTADDRESS$ -i $USER6$ -C "$USER1$/check_smtp -H 127.0.0.1"
}
Pour que cette commande fonctionne correctement, il est à noter que le répertoire libexec 1) qui est défini par la variable $USER1$ doit être situé au même endroit sur le serveur Nagios et l'hôte supervisé. la macro nagios $USER6$ contient la clef qui va être utilisée lors de l'appel ssh comme /home/ojan/.ssh/id_rsa par exemple.
define service{
use ssh-service ; Name of service template to use
host_name *
service_description MAIL:SMTP
check_command check_ssh_smtp!
}