Bon il manque une petite phrase dans ma doc visiblement et il va falloir que je l’ajoute
@dvb : j’imagine que ta commande « sudo » (quelle qu’elle soit) rentre en timeout non ?
Pour que des commandes sudo fonctionnent ici, il faut certe que le user soit dans le groupe sudoers (ce que tu as bien fait), mais il faut également configurer ce user pour qu’il n’ait pas de mot de passe à taper en cas de lancement d’une commande sudo.
Pour cela, il te faut te connecter sur la machine sur laquelle tu as déclaré cet utilisateur, et taper la commande suivante (en partant du principe que le nom du user est sshmanager, sinon à adapter ) :
echo 'sshmanager ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/sshmanager
EDIT : on peut également adapter cette commande pour que seulement certaines commandes soient lançable sans mot de passe (si besoin).
EDIT2 : Ce n’est à faire qu’une seule fois bien sûr, une fois cette commande exécutée, cet utilisateur pourra lancer des commandes sudo sans avoir à taper son mot de passe, donc cela fonctionnera à travers le plugin
D’où la commande que je t’ai proposé qui ne modifie pas le sudoers directement mais ajoute un fichier de conf dans la gestion du sudo à côté
Je te comprend, mais les solutions existantes par ailleurs pour palier à cette problématique, sont soit très lourde à mettre en place, compliquées à maintenir, et niveau sécurité, obligerait d’une manière ou d’une autre à mettre le mot de passe quelque part et à le passer en paramètre d’une commande, ce qui n’est pas forcément mieux (loin de là).
D’où la dernière proposition que j’avais faite, de n’autoriser le sudo sans mot de passe que sur certaines commandes, par exemple les commandes « reboot », « systemctl », « apt update » et « apt upgrade » etc… à affiner en fonction des besoins
Cela ne résoudrait pas ton problème, car la partie clé n’est là que pour l’authentification (alors si il est possible de faire reposer sudo sur l’authentification par clé, mais non content de ne pas être trivial à mettre en place, cela revient à taper des commandes sans avoir à rentrer de mot de passe / clé… donc on en revient au point de départ
Après réflexion, ta proposition de « fichier de conf à côté » semble un compromis intéressant (*). Si je veux limiter au service usbipd par exemple, ce serait ce type de syntaxe ?
sshmanager ALL=(ALL) NOPASSWD: /usr/sbin/usbipd
(*) Il resterait à restreindre l’IP du demandeur, je creuserai à l’occasion.
Ca tu peux le faire également assez simplement, en ajoutant un fichier à ta configuration ssh (toujours sur le même principe de ne pas modifier le fichier du système mais d’ajouter un fichier supplémentaire) :
Edite le fichier, via la commande (par exemple) : sudo nano /etc/ssh/sshd_config.d/jeedom.conf (jeedom.conf n’est qu’un exemple, tu lui donnes le nom que tu souhaites, l’important c’est l’extension de fichier .conf ;))
Ensuite dans le fichier tu mets un truc du style :
Match User sshmanager
AllowUsers sshmanager@192.168.1.50
le nom de ton user étant ici sshmanager et l’adresse IP de ton Jeedom serait 192.168.1.50
Et enfin pour que ce soit pris en compte, il faut redémarrer le service SSH : sudo systemctl restart sshd ou bien rebooter la machine
et ATTENTION : si tu fais une fausse manip, tu risques de perdre l’accès SSH à la machine en question, alors on vérifie bien à deux fois avant de redémarrer le service SSH, sinon la punition va être très rapide lol.