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 generateOfflineSig
wyglą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 ls
na 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.
/etc/sudoers
składni, ale mój plik ma linię# %wheel ALL=(ALL) NOPASSWD: ALL
. Może powinna być twoja liniajeff ALL=(ALL) NOPASSWD: ALL
?Odpowiedzi:
Wygląda na to, że miałem w
/etc/sudoers
pliku „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.
źródło