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 generateOfflineSig
ressemble à
#!/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 ls
sur 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.
/etc/sudoers
syntaxe, mais mon fichier a la ligne# %wheel ALL=(ALL) NOPASSWD: ALL
. Peut-être que votre ligne devrait l'êtrejeff ALL=(ALL) NOPASSWD: ALL
?Réponses:
Il semble que j'avais une "faute de frappe" dans le
/etc/sudoers
fichier ...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.
la source