Διορθώθηκε: sudo: δεν υπάρχει παρουσία tty και κανένα πρόγραμμα askpass

Η καθορισμένη γραμμή εξόδου no tty present and no askpass είναι ένα από αυτά τα μηνύματα σφάλματος ssh που πραγματικά δεν είναι τόσο χρήσιμα επειδή δεν φτάνει πραγματικά στο σημείο που προκαλεί το πρόβλημα. Πιθανότατα, στην πραγματικότητα εργάζεστε με ένα έγκυρο TTY κάποιας μορφής όταν βλέπετε το μήνυμα και πιθανότατα έχετε ασχοληθεί με την εισαγωγή του κωδικού πρόσβασης sudo μέσω ssh εντάξει. Πιθανότατα αντιμετωπίζετε λάθος σύνταξης, αλλά το μήνυμα δεν αντιμετωπίζει άμεσα αυτό το γεγονός.

Επειδή πρόκειται για πρόβλημα που σχετίζεται με το ίδιο το ssh, πιθανότατα θα μπορείτε να αναπαραγάγετε το πρόβλημα σε υπηρεσίες Linux, FreeBSD, macOS και Cygwin στα Microsoft Windows. Ευτυχώς, η επιδιόρθωση θα πρέπει να είναι σχεδόν ίδια σε όλες αυτές τις πλατφόρμες.

Μέθοδος 1: Εύρεση τερματικού για ssh

Παρόλο που πιθανότατα εργάζεστε ήδη από ένα τερματικό, το ssh πιθανώς δεν το καταλαβαίνει. Ίσως εξακολουθεί να προσπαθεί να αναζητήσει έναν εξομοιωτή τερματικού TTY, παρά το γεγονός ότι βρίσκεστε μέσα σε ένα παράθυρο γραμμής εντολών. Δοκιμάστε να αναπαραγάγετε το σφάλμα για να το δοκιμάσετε. Διαμορφώσαμε μια εικονική μηχανή για να λειτουργήσουμε ως παράδειγμα και τρέξαμε ssh [email protected] "sudo /var/mail/startup.sh" ως δοκιμή. Φυσικά, θα θέλατε να αλλάξετε τη γραμμή εντολών και ssh σε κάτι που ταιριάζει με αυτό που προσπαθείτε να κάνετε.

Θα θελήσετε να βεβαιωθείτε ότι συνδέεστε στον διακομιστή που πιστεύατε ότι ήσασταν. Ανεξάρτητα, ελέγξτε για να δείτε εάν εξακολουθείτε να λαμβάνετε το sudo: δεν υπάρχει παρουσία tty και δεν έχει καθοριστεί από το πρόγραμμα askpass μήνυμα σφάλματος Πιθανότατα, αν εξακολουθείτε να το λαμβάνετε, τότε θα το δείτε τρεις φορές και μάλλον θα σας ζητηθεί να εισαγάγετε τον κωδικό πρόσβασής σας με τον τρόπο που θα έχετε εάν εκτελείτε sudo τοπικά στο Debian ή το Ubuntu.

Δοκιμάστε να προσθέσετε -t μετά ssh για να διορθώσετε το σφάλμα σύνταξής σας. Εννέα φορές στα δέκα, αυτό θα αναγκάσει το ssh να διαθέσει ένα εικονικό TTY στον εαυτό του και να προσποιούμαστε ότι συμβαίνει να τρέχει μέσα σε ένα πραγματικό τερματικό. Δεν χρειάζεται να αλλάξετε τίποτα άλλο σχετικά με την εντολή σας. Απλώς προσθέστε την επιλογή -t μετά τα γράμματα ssh και, στη συνέχεια, κρατήστε την εντολή κεντρικού υπολογιστή και πέρασε την ίδια. Θα θέλατε επίσης να το έχετε υπόψη σας αν χρειαστεί να εκτελέσετε ssh στο τελευταίο μέρος της εντολής σας.

Για παράδειγμα, εάν λάβατε αυτό το ίδιο σφάλμα κατά την εκτέλεση μιας εντολής που είχε τη μορφή ssh -t [email protected] "ssh [email protected]" θα πρέπει να διατηρήσετε την επιλογή -t μετά το πρώτο ssh για να το αποτρέψετε. Λάβετε υπόψη ότι αν αλλάξατε αργότερα τη δεύτερη εντολή είτε για παραγωγή είτε για κατανάλωση δεδομένων, τότε δεν θα θέλατε να χρησιμοποιήσετε καθόλου το -t. Για παράδειγμα, εάν ξεκινήσατε να τρέχετε γάτα αντί για σενάριο, τότε θα μπορούσατε να απορρίψετε το -t αφού δεν θα χρειαστεί να διαθέσετε ένα τερματικό για αυτό.

Μέθοδος 2: Επιδιόρθωση του αρχείου visudo

Μπορεί επίσης να έχετε πρόβλημα διαμόρφωσης που προκαλεί αυτό το σφάλμα. Τροποποιήστε το αρχείο visudo με την έκδοση του sudo visudo εντολή και λάβετε υπόψη ότι δεν θα θέλετε ποτέ να επεξεργαστείτε αυτό το αρχείο με οποιονδήποτε άλλο τρόπο. Θα πρέπει να βρείτε μια γραμμή που να περιέχει ALL = NOPASSWD και να ακολουθείται από τους τύπους εντολών που δεν χρειάζεται να εισαγάγετε τον κωδικό πρόσβασης του διαχειριστή για εκτέλεση.

Κάθε μεμονωμένη εντολή πρέπει να τελειώνει με κόμμα εκτός από την τελευταία στην γραμμή. Έτσι, εάν είχατε κάτι που έβγαλε όπως / sbin / poweroff / sbin / start / sbin / stop, θα τα αντιμετωπίσει όλα ως μία εντολή και θα σας ρίξει το σφάλμα. Ομοίως, εάν λείπει μια εντολή που προσπαθείτε να εκτελέσετε μέσω ssh, τότε θα λάβετε και αυτό το σφάλμα. Πραγματοποιήστε τις απαραίτητες προσαρμογές και αποθηκεύστε το αρχείο πριν ελέγξετε εάν το σφάλμα εξακολουθεί να αναπαράγεται.

Εάν εξακολουθείτε να έχετε το σφάλμα ακόμα και αφού το κάνετε και επανεκκινήσετε την υπηρεσία, δοκιμάστε τοακολουθώντας την εντολή στην παρακάτω εικόνα και βεβαιωθείτε ότι η γραμμή PermitTTY διαθέτει τη λέξη ναι μετά από αυτήν. Εάν αυτή είναι η τελευταία γραμμή στο αρχείο σας, βεβαιωθείτε ότι υπάρχει μια κενή νέα γραμμή αργότερα. Το GNU nano εκτελεί αυτήν την εργασία αυτόματα από προεπιλογή.

Θα πρέπει να κάνετε επανεκκίνηση τυχόν σχετικών υπηρεσιών πριν επιχειρήσετε να αναπαραγάγετε ξανά το μήνυμα σφάλματος.


$config[zx-auto] not found$config[zx-overlay] not found