Wykonuję następujące polecenie przez ssh w środowisku testowym jako root:
ssh <remote_srv> "apt-get autoremove"
W moim sshd_config mam „PermitRootLogin bez hasła” i dodałem id_rsa.pub roota do pliku autoryzowanego_kluczy na zdalnym serwerze.
Mimo to dostaję następujące błędy:
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
Sprawdziłem to na stronach ssh de de man, ale nie mogłem skupić się na wyjaśnieniu pseudo-terminów i ttys.
Czy jest ktoś, kto może wyjaśnić powyższe błędy? Myślę, że to brakująca opcja, ale która?
Obie platformy to Ubuntu 14.04 LTS.
Rozwiązanie Alexa eliminuje błędy i prawie ma właściwą przyczynę, ale nie pozwala ci odpowiedzieć na żadne pytania (co jest w porządku, gdy uprzedziłeś odpowiedzi i uruchamiasz się ze skryptu, ale naprawdę denerwujące, gdy próbujesz nowych pakietów ). Kluczowym zagadnieniem jest interakcja między założeniami poczynionymi przez ssh i różne nakładki debconf.
Zacznijmy od ssh. ssh zakłada, że jeśli nie podasz komendy zdalnej, potrzebujesz pty na zdalnym końcu i że podasz komendę, której nie robisz (która działa zadziwiająco dobrze przez 90% czasu, tylko nie ta). Można to zastąpić
-t
opcją, która wymusza pty lub-T
opcją, która nie wymusza pty (lub odpowiednimi opcjami pliku konfiguracyjnego). Ponadto, przy użyciu pty,TERM
zmienna środowiskowa jest kopiowana (wyjątki mogą mieć zastosowanie do sprawdzenia dokumentacji w celu uzupełnienia szczegółów i oficjalnego formularza wejścia do loterii). Warto również zauważyć, że-x
opcja wyłącza przekazywanie X11 i-X
włącza go.Sam Debconf nie ma wymagań dotyczących interaktywności (zgodnie z projektem), ale różne interfejsy mają, a każdy ma inne wymagania.
Uważam, że najlepiej wyglądającym frontendem jest gnome (jest też fronted ked, którego nie uruchomiłem). Interfejs gnome (a także kde) wymaga pewnych domyślnych bibliotek i serwera X11, dlatego linia poleceń do wymuszenia frontonu gnome (po zainstalowaniu odpowiednich bibliotek) byłaby
lub jeśli wolisz kde
Frontend okna dialogowego (domyślny) wymaga pty i terminala o minimalnym poziomie funkcjonalności określonym w zmiennej TERM (w praktyce jest to wszystko z pełnym opisem terminfo oprócz głupiego).
lub
frontend readline ma mniej rygorystyczne wymagania i będzie działał z głupimi terminalami, ale będzie wymagał pty.
Nakładka edytora zależy od edytora, który miałby określone wymagania w zależności od edytora.
Nieinteraktywny interfejs użytkownika nie ma żadnych wymagań, ale nie zadaje żadnych pytań (które mogą, ale nie muszą być tym, czego chcesz).
źródło
ssh -t
po więcej szczegółów i inne opcje zajrzyj na stronę man ssh. Przeczytaj także drugi akapit tej odpowiedzi.