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.