Jak włączyć polecenia sudo przez SSH bez pytania o hasło?

13

Mam serwer A i serwer B (oba Ubuntu 10.04 LTS) wykonujące różne zadania. Serwer A musi zaczepić serwer B, który generuje plik i po zakończeniu scp przesyła go z powrotem na serwer A. To wszystko jest na miejscu i nie martwię się zbytnio kwestiami bezpieczeństwa. Wymiana kluczy SSH jest już wykonywana między serwerami A i B i działa dobrze.

Na serwerze B generateOfflineSigwygląda skrypt

#!/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

Również na serwerze B visudo ma ten wpis:

jeff ALL=NOPASSWD: ALL

Co działa, jeśli wykonam sudo lsna serwerze B ... hasło nie jest wymagane.

Niestety SSH zawsze prosi o hasło na serwerze A:

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

Jakieś pomysły? Proces ten nie może zostać przerwany przez wprowadzenie hasła.

Jeff
źródło
Nie w 100% pewna /etc/sudoersskładni, ale mój plik ma linię # %wheel ALL=(ALL) NOPASSWD: ALL. Może powinna być twoja linia jeff ALL=(ALL) NOPASSWD: ALL?
snapshoe
Czy całe zdalne polecenie nie musi być w cudzysłowie? Możesz wykonywać skrypt na
serwerze
Właściwie ... Myślę, że snapshoe ma coś wspólnego. Odpowiem na własne pytanie nieco później ...
Jeff

Odpowiedzi:

16

Wygląda na to, że miałem w /etc/sudoerspliku „literówkę” ...

jeff ALL=NOPASSWD: ALL

musiał znajdować się na samym końcu pliku. Pomoc Ubuntu mówi tylko Dodaj (...) do KONIEC pliku (jeśli nie na końcu, może zostać anulowane przez późniejsze wpisy)

Potem hasło nigdy nie jest pytane o „polecenia sudo Jeffa, lokalnie lub przez SSH.

Jeff
źródło