sudo over ssh: brak tty i nie określono programu askpass


15

Wciąż otrzymuję ten błąd i próbowałem kilka sposobów omówienia online, aby to naprawić, i żaden nie działa dla mnie. Mam klucze SSH konfiguracji tak gdy uruchamiam 'ssh newton@host.com'go automatycznie loguje mnie, mam również ustawić tę użytkownika w visudocelu być 'newton ALL=(ALL:ALL) ALL' ja wtedy też próby dodania'newton ALL=NOPASSWD: /var/www/script.sh'

Niestety za każdym razem, gdy ssh newton@host.com 'sudo /var/www/script.sh'uciekam z Cygwin, wracam. Próbowałem również dodać, -t -tale wtedy monituje mnie o hasło.

total size is 21209180  speedup is 314.69
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts

Nie jest to specyficzne dla Cygwin; Widzę ten sam problem przy korzystaniu ssh example.com sudo echo helloz jednego systemu Linux na inny. Zaktualizowałem odpowiednio twój tytuł. Oflagowałem również twoje pytanie do migracji na stronę Unix.
Keith Thompson,

Odpowiedzi:


10

Musisz mieć dostępny terminal do uruchomienia, sudoaby mógł monitować o hasło. Jeśli przekażesz polecenie ssh, oznacza to, że polecenie nie potrzebuje terminala i nie tworzy go, chyba że przekażesz -t. Zobacz SSH wewnątrz SSH nie powiedzie się z „stdin: nie jest tty” dla bardziej szczegółowego wyjaśnienia.

Jeśli nawet nie możesz wprowadzić hasła -t, możliwe, że przyczyną problemu jest system Windows. Konsola Windows nie emuluje całkowicie terminala unixowego; w takich okolicznościach aplikacje Cygwin mogą mieć trudności z prawidłową emulacją terminala (nie jestem tego pewien, zauważ). Jeśli to jest problem, uruchom sshemulator terminala, taki jak Console2 lub Mintty (zawarty w dystrybucji Cygwin) - zobacz Najlepszy sposób użycia powłoki z Cygwin w Windows 7 .

Jeśli spodziewałeś się, że hasło SSH zastąpi twoje hasło do uwierzytelnienia w sudo, tak się nie stanie. Sudo wymaga hasła (chyba że dodasz NOPASSWDznacznik do pliku sudoers). Pamiętaj, że nadal musisz mieć terminal, nawet z NOPASSWD, jeśli requirettyopcja jest ustawiona w pliku sudoers.

Jeśli chcesz zalogować się do konta roota bez hasła, co nie jest dobrym pomysłem z punktu widzenia bezpieczeństwa, użyj SSH, aby uzyskać dostęp do konta root, najlepiej w dwóch przeskokach. Zobacz SSH wewnątrz SSH kończy się niepowodzeniem z „stdin: is not tty” (z root@host.comfor otheruser@computertwo.com).


3

Niech nie chcesz włączać hasła dla polecenia / binarnego nodejs.

Zmodyfikuj visudo

sudo visudo

Z następującym wierszem, aby włączyć hasło dla polecenia. Podaj to wiele poleceń z przecinkami i spacją po każdym poleceniu.

<user name> ALL = NOPASSWD: /usr/local/bin/node

dawny. sunthara ALL = NOPASSWD: /usr/local/bin/node

wprowadź opis zdjęcia tutaj


1

Edytuj plik konfiguracyjny ssh-server i dołącz u dołu:

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes

Nie działa: service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
kiltek 26.04.17

Może trzeba zmienić naMatch User newton
ILMostro_7

1
Nie, oznacza to, że nie można zapisać Userdo pliku sshd, ponieważ ta opcja konfiguracji nie istnieje. (przynajmniej tak jest w moim systemie Ubuntu 16.04)
kiltek 26.04.17

Ze stron podręcznika: „MatchIntroduce blok warunkowy. Jeśli wszystkie kryteria w wierszu Match są spełnione, słowa kluczowe w kolejnych wierszach zastępują te ustawione w globalnej sekcji pliku konfiguracyjnego, aż do kolejnej linii Match lub końca pliku. Argumentami dopasowania jest jedna lub więcej par kryteriów-wzorców. Dostępne kryteria to Użytkownik, Grupa, Host i Adres. Wzorce dopasowania mogą składać się z pojedynczych wpisów lub list oddzielonych przecinkami i mogą używać znaku zastępczego i negacji operatory opisane w sekcji WZORZEC ssh_config (5). "
ILMostro_7,

Nie widzę Matchbloku w twojej odpowiedzi ...
kiltek 26.04.17

0

Napotkałem ten błąd, kiedy popełniłem błąd w / etc / sudoers. Zamiast określać wiele takich poleceń:

NOPASSWD= /bin/x, /bin/y

Zapisałem jako:

NOPASSWD= /bin/x /bin/y

tzn. bez przecinka. Teraz, gdy próbuję, dostaję komunikat „ Nie mam obecnego tty”

ssh host 'sudo x'

0

Nie wiem, czy jest to powiązane, ale kiedy miałem plik „... NOPASSWD: /xyz/script.shl” w pliku sudoers, dostałem ten komunikat o błędzie, dopóki nie zamieściłem #!/bin/shellnamewiersza na początku /xyz/script.shlpliku.


0

komentowanie poniższych parametrów w pliku / etc / sudoers pomogło mi.

# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   !visiblepw

---> skomentuj parametry w następujący sposób

#Defaults    requiretty
#Defaults   !visiblepw
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.