Zrobiłem tę modyfikację:
vim /etc/sudoers
# User privilege specification
root ALL=(ALL) NOPASSWD: ALL
Kiedy używam:
sudo service cassandra start
działa bez hasła. Ale kiedy używam:
script shell
ssh -t root@$machine -x "sshpass -p 'ubuntu' ssh -t ubuntu@$address -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/nul -x 'sudo service cassandra start'"
muszę wpisać hasło!
Czy masz pomysł, dlaczego to nie działa z ssh?
Wielkie dzięki za pomoc. Z poważaniem.
/etc/sudoers
bezpośrednio przy użyciu vima. Jeśli popełnisz błąd, możeszsudo
być zepsuty. Lepiej użyćvisudo
polecenia. Będzie również edytować/etc/sudoers
plik, ale dokona dodatkowej kontroli składni, zanim wyjdziesz z programu ( patrz )Odpowiedzi:
„Root” w / etc / sudoers powinien być identyfikatorem użytkownika wykonującego polecenia… W twoim przykładzie byłoby to „ubuntu”.
Twój przykład robi to:
Na twoim przykładzie wygląda na to, że musisz włączyć sudo dla Ubuntu, a nie root, aby móc wykonywać polecenia serwisowe.
Przykład:
EDYCJA: Jestem naprawdę zdezorientowany co do tego, co próbujesz osiągnąć. Jeśli próbujesz po prostu ssh na innym serwerze i uruchomić polecenie serwisowe, wszystko co jest wymagane, to w skrypcie powłoki:
Twoje polecenie wyglądałoby tak:
Ponadto nadal musisz dodać moje zmiany do / etc / sudoers per above, aby umożliwić „ubuntu” wykonanie tej komendy.
źródło