Unikanie hasła roota

0

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.

badacz
źródło
myślę, że temat nie jest tak jasny, czy możesz go edytować ?.
Francisco Tapia,
jakaś wskazówka: unikaj edycji /etc/sudoersbezpośrednio przy użyciu vima. Jeśli popełnisz błąd, możesz sudobyć zepsuty. Lepiej użyć visudopolecenia. Będzie również edytować /etc/sudoersplik, ale dokona dodatkowej kontroli składni, zanim wyjdziesz z programu ( patrz )
Slizzered

Odpowiedzi:

0

„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:

  1. loguje się do $ machine jako root (Zakładam, że ustawiłeś tę maszynę tak, aby mogła logować się jako root. Jeśli nie, musisz dostosować ustawienia pam.d, aby umożliwić logowanie roota przez ssh. To nie ma nic wspólnego z sudo ).
  2. Jako maszyna root @ # twoje polecenie ssh na adres Ubuntu @ i wykonuje polecenie „sudo service cassandra start”.

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:

# User privilege specification
ubuntu    ALL=(root) NOPASSWD: /usr/bin/service cassandra *

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:

sshpass -p 'ubuntu' ssh -t ubuntu@$address -o   StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/nul -x 'sudo service cassandra start'

Ponadto nadal musisz dodać moje zmiany do / etc / sudoers per above, aby umożliwić „ubuntu” wykonanie tej komendy.

Rob Calistri
źródło
dodałem ubuntu ALL = (root) NOPASSWD: / usr / bin / service cassandra * w / etc / sudoers, ale wspomniałem, że muszę wprowadzić hasło. Adres ubuntu @ $ to kontener lxc, czy to problem?
badacz
lxc zapewnia tutaj inny poziom bezpieczeństwa, ale nie sądzę, że to jest twój problem. Możesz dodać flagę -v do wywołania ssh, aby dowiedzieć się więcej o tym, co uderzasz. Może dać ci więcej szczegółów. Powinieneś również sprawdzić /var/log/auth.log, aby zobaczyć, jaki błąd jest tam prezentowany. Oba te dane dziennika pomogłyby w dalszym debugowaniu błędów uwierzytelniania. Ponadto należy upewnić się, że uwierzytelnianie działa etapowo. Najpierw po prostu spróbuj połączyć się z adresem $ za pomocą hasła, a następnie upewnij się, że sudo działa bezpośrednio. Jeśli tak, spróbuj zwykłego połączenia ssh bez sshpass. itp.
Rob Calistri