Comment activer les commandes sudo sur SSH sans demander de mot de passe?

13

J'ai le serveur A et le serveur B (tous deux Ubuntu 10.04 LTS) effectuant des tâches différentes. Le serveur A doit pousser le serveur B, qui génère un fichier et le scp retourne au serveur A une fois terminé. Tout cela est en interne et je ne suis pas trop préoccupé par les problèmes de sécurité. L'échange de clés SSH est déjà effectué entre les serveurs A et B et fonctionne correctement.

Sur le serveur B, le script generateOfflineSigressemble à

#!/bin/bash
echo "in script"
sudo apt-offline set offline_package.sig --install-packages "$0"
echo "after sudo"
scp offline_package.sig jeff@servera:/tmp

Également sur le serveur B, visudo a cette entrée:

jeff ALL=NOPASSWD: ALL

Qui fonctionne si j'exécute sudo lssur le serveur B ... aucun mot de passe demandé.

Malheureusement, SSH demande toujours un mot de passe sur le serveur A:

jeff@servera:~$ ssh -t jeff@serverb /home/jeff/generateOfflineSig "incron"
in script
[sudo] password for jeff:

Des idées? Ce processus ne peut pas être interrompu par la saisie d'un mot de passe.

Jeff
la source
Pas sûr à 100% de la /etc/sudoerssyntaxe, mais mon fichier a la ligne # %wheel ALL=(ALL) NOPASSWD: ALL. Peut-être que votre ligne devrait l'être jeff ALL=(ALL) NOPASSWD: ALL?
snapshoe
La commande à distance entière ne doit-elle pas être entre guillemets? Vous exécutez peut-être le script sur Sever A
TheLQ
En fait ... Je pense que snapshoe est sur quelque chose. Je répondrai à ma propre question un peu plus tard ...
Jeff

Réponses:

16

Il semble que j'avais une "faute de frappe" dans le /etc/sudoersfichier ...

jeff ALL=NOPASSWD: ALL

devait être à la toute fin du fichier. L'aide d'Ubuntu indique uniquement Ajouter (...) à la FIN du fichier (sinon à la fin, il peut être annulé par des entrées ultérieures)

Après cela, le mot de passe n'est jamais demandé pour les "commandes sudo de jeff, localement ou via SSH.

Jeff
la source