Po uruchomieniu sudo
terminal zacina się na kilka sekund, a następnie wyświetla komunikat o błędzie. Mój terminal wygląda następująco:
ubuntu@(none):~$ sudo true
sudo: unable to resolve host (none)
Co mogę zrobić, aby to rozwiązać?
sudo
error-handling
Kit Sunde
źródło
źródło
/etc/hostname
i/etc/hosts
.hosts
pliku, ale zamiast tego pod inną, zwłaszcza że w wielu sieciach komputery mają podobną nazwę. To pytanie (i odpowiedź) pojawia się, gdy ktoś szuka tego problemu, a odpowiedź zachęca go do sprawdzenia takich rozbieżności, nawet jeśli dokładna pisownia byłaby inna.hostname
samo zhosts
. np. nazwa hosta to ubuntu-pc, a hosty to ubuntu-pc muszą być takie same.sudo /etc/init.d/network-manager restart
. Zastanawiam się jednak, dlaczego przede wszystkimsudo
marnuje się czas na czekanie na rzeczy związane z siecią. Czy nie powinnosudo
działać bez problemów, gdy sieć jest niedostępna?Odpowiedzi:
Dwie rzeczy do sprawdzenia (zakładając, że twoja maszyna jest wywoływana
my-machine
, możesz to odpowiednio zmienić):Że
/etc/hostname
plik zawiera tylko nazwę urządzenia.To
/etc/hosts
ma wpis dlalocalhost
. Powinien mieć coś takiego:Jeśli któryś z tych plików nie jest poprawny (ponieważ nie można sudo), może być konieczne ponowne uruchomienie komputera w trybie odzyskiwania i wprowadzenie modyfikacji, a następnie ponowne uruchomienie w zwykłym środowisku.
źródło
#%admin ALL=(ALL) ALL
na%admin ALL=NOPASSWD: ALL
, a następnie ponownie uruchomić i sudo su - edytować te pliki, ustawić / poprawić nazwę hosta, ponownie uruchomić komputer i wszystko działało.::1 localhost
do/etc/hosts
(jest to wersja IPv6 127.0.0.1, alias adresu loopback)127.0.0.1 localhost
ale127.0.1.1 my-machine
?Edytuj
/etc/hosts
i dołącz nową nazwę hosta do linii 127.0.0.1 (lub utwórz nową linię, jeśli wolisz).Mój wygląda jak:
Zastąp
penguin
w powyższym przykładzie swoją nową nazwą hosta, jak podano w/etc/hostname
pliku.źródło
sudo
nawet jeśli ten komunikat jest wyświetlany. IIRC nadal musisz podać hasło przy każdym wywołaniu. Jeśli to nie zadziała, możesz ponownie uruchomić komputer w konsoli odzyskiwania i zastosować zmiany. Konto root z hasłem jest odradzane.Dodaj swoją nazwę hosta, aby
/etc/hosts
polubić:źródło
echo $(hostname -I | cut -d\ -f1) $(hostname) | sudo -h 127.0.0.1 tee -a /etc/hosts
Uwaga: jest to odpowiedź na to pytanie, które zostało połączone z tym pytaniem .
Twoja
dave00-G31M-ES2L
nazwa hosta ( ) nie jest reprezentowana w/etc/hosts
. DodajL
do tego wiersza:Więc staje się:
Aby to zrobić, otwórz konsolę (naciśnij Ctrl+ Alt+ T) i wpisz:
Dodaj list,
L
jak wspomniano, zapisz i wyjdź.źródło
sudoedit
(lubsudo -e
). Aby określić preferowanego edytora, użyjEDITOR
zmiennej środowiskowej (np.export EDITOR=vim
), Ponieważ tworzy ona kopię offline do edycji, a następnie po edycji zastępuje.sudo
kiedy już go nie masudo
.sudo
nie działa, proszę pana.sudo: unable to resolve host ...
sudo
? Wspomniany komunikat o błędzie pochodzi zsudo
polecenia. Może miałeś na myśli coś innego?sudo
działa dobrze. Po prostu nie może przechowywać żadnego stanu (tj. Jak powiedział Lekensteyn w innym miejscu, za każdym razem musisz wprowadzić hasło).Miałem ten problem, gdy korzystałem z Ubuntu na VPS. Rozwiązałem go, edytując plik / etc / hosts.
uruchom to polecenie:
a następnie dodaj:
Mam nadzieję, że to rozwiąże Twój problem :)
PS: Pamiętaj, aby ponownie uruchomić komputer!
źródło
hosts
pliku („ubuntu” w przykładzie Lucy). Pierwszy wiersz może być również „localhost”.sudoedit
(lubsudo -e
). Aby określić preferowanego edytora, użyjEDITOR
zmiennej środowiskowej (np.export EDITOR=vim
), Ponieważ tworzy ona kopię offline do edycji, a następnie po edycji zastępuje.Miałem ten sam problem, mimo że nazwa hosta w moim pliku / etc / hostname i pliku / etc / hosts były zgodne.
Moja nazwa hosta to „staging_1”. Okazuje się, że nazwa hosta nie może zawierać podkreślenia, dlatego otrzymywałem ten błąd. Zmiana znaku podkreślenia na myślnik naprawiła mój problem.
źródło
W AWS przejdź do swojego vpc i włącz „Nazwy hostów DNS”.
źródło
DNS Hostnames
Objaw podany w pytaniu może silnie korelować z tym bardziej szczegółowym problemem:
Istnieją różne sposoby rozwiązania tego problemu, jednym z nich jest dodanie nazwy hosta jako localhost w
/etc/hosts
(jak pokazano w kilku innych odpowiedziach). To może być ogólnie właściwe, ale nie jest to jedyna możliwa rozdzielczość.„W pełni kwalifikowana nazwa domeny” może być dostarczana przez zewnętrzny serwer DNS lub podobny (jeśli taki jest dostępny w Twojej sieci). W takim przypadku
sudo
nie będzie narzekać, pomimo brakującego wpisu w/etc/hosts
.Uwaga:
sudo
próbuje wyrejestrować nazwę hosta, nawet jeśli nie jest to konieczne, ze względu na opcjonalne możliwości w pliku sudoers. Zobacz polecenie sudo próbujące wyszukać nazwę hosta .Dopóki opóźnienie nie jest zbyt długie, ten komunikat o błędzie jest zwykle nieszkodliwy.
źródło
sudo --host=localhost
Napotkałem ten sam komunikat o błędzie. Myślę, że ten wątek dyskusyjny na forach programistów AWS jest lepszym rozwiązaniem:
„Przejdź do konsoli zarządzania VPC, wybierz VPC, kliknij Działania, wybierz Edytuj nazwy hostów DNS i wybierz Tak”.
https://forums.aws.amazon.com/thread.jspa?messageID=699718
źródło
Niektóre emulatory terminali nie aktualizują monitu o poprawną nazwę hosta, dopóki nie zamkniesz i nie uruchomisz ponownie emulatora (lxterminal, mówię do ciebie).
Spędziłem 30 minut walcząc z tym błędem po edycji mojej nazwy hosta i plików hostów i działając,
sudo service hostname restart
dopóki nie uruchomiłem sięsudo hostname
i nie zobaczyłem, że nazwa hosta jest nową wartością, nawet jeśli monit wyświetlał starą wartość.źródło
W moim przypadku to był problem, zmieniłem
hostname
sięman
, bo chciałem wiedzieć, czy istnieją pewne parametry można wykorzystać nahostname
. Zamiast tego zmieniłem mojehostname
naman
i zawsze otrzymałem taką samą wiadomość jak typo zmianie nazwy hosta z powrotem na `localhost wszystko znów działało dobrze
źródło
Każdy zaleca modyfikację
/etc/hosts
. Ale w niektórych przypadkach może to nie być możliwe (na przykład w kontenerze dokera). Musiałem więc znaleźć lepszy sposób i wymyśliłem:Aliasy nie działają w skryptach bash, ale możemy używać zmiennych:
sudo='sudo -h 127.0.0.1'
źródło
Przykro mi, ale nie mogę ci dużo pomóc, ale ponieważ napisano „nie można rozwiązać hosta”, spróbuj uruchomić:
I sprawdź, czy dane wyjściowe to nazwa hosta komputera. Jeśli nie, problemem jest konfiguracja hosta, a nie sudo.
źródło
OP napisał:
źródło
może pojawić się błąd, jeśli hosty lub plik nazwy hosta zawierają niedozwolone znaki. Dozwolone są tylko te symbole: az, AZ, 0-9
źródło
Miałem ten sam problem! Zmieniłem nazwę mojego VPS za pomocą panelu administracyjnego online, który nie zmienił nazwy komputera w pliku hosts Wszystko, co zrobiłem, to uruchomiłem:
Następnie zedytowałem to z tego:
Do tego:
i to naprawiło mój błąd! Mam nadzieję, że to pomogło!
źródło
Miałem ten sam problem. Rozwiązałem go, edytując pliki / etc / hosts i / etc / hostname ... w pliku / etc / hosts, po prostu edytuj górną część, jak pokazano poniżej.
źródło
127.0.1.1 localhost myhostname
czy127.0.1.1 myhostname
?/etc/hosts
bezsudo
.sudo
nie działasudo: unable to resolve host ...
jeśli nie możesz sudo, możesz zalogować się jako root przez su. IE: su root (x-term). następnie podaj hasło roota, gdy pojawi się monit, a następnie możesz edytować pliki za pomocą nano. Hasło roota w 'buntu' jest takie samo jak hasło, którego używałbyś do sudo.
źródło
sudo
.root
to własne konto, które nie ma domyślnie ustawionego hasła.Jeśli używasz Vagrant, zaloguj się do gościa i uruchom
apt-get --no-install-recommends install virtualbox-guest-utils
źródło
Jeśli problem dotyczy tego
/etc/hostname
pliku/etc/hosts
, oba pliki mają żądaną nazwę hosta, a mimo to Twój komputer wyświetla błądSpróbuj wymusić nazwę hosta
Prawdopodobnie nadal będzie występować ten sam błąd, ale spróbuj się wylogować i zalogować ponownie. To zadziałało dla mnie.
źródło