Fast: sudo: ingen tty til stede og intet askpass-program specificeret
Intet til stede og ingen askpass-program specificeret output linje er en af de ssh fejlmeddelelser, der virkelig ikke er så nyttige, fordi det ikke rigtig kommer til det punkt, hvad der forårsager problemet. Mere end sandsynligt arbejder du faktisk med en gyldig TTY af en slags, når du ser meddelelsen, og du har sandsynligvis beskæftiget dig med at indtaste din sudo-adgangskode over ssh helt fint. Du har mere end sandsynligt at gøre med en syntaksfejl, men meddelelsen vedrører ikke denne kendsgerning direkte.
Da dette er et problem forbundet med selve ssh, vil du mere end sandsynligt være i stand til at reproducere problemet på Linux, FreeBSD, macOS og Cygwins Unix-tjenester på Microsoft Windows. Heldigvis skal rettelsen være stort set den samme på alle disse platforme.
Metode 1: Find en terminal til ssh
Mens du sandsynligvis allerede arbejder fra en terminal, er ssh sandsynligvis ikke klar over dette. Det forsøger muligvis stadig at lede efter en TTY-terminalemulator på trods af at du er inde i et kommandopromptvindue. Prøv at reproducere fejlen for at teste dette. Vi konfigurerede en virtuel maskine til at tjene som et eksempel og løb ssh [email protected] 'sudo /var/mail/startup.sh' som en test. Naturligvis vil du ændre kommandoen og ssh-linjen til noget, der matcher det, du prøver at gøre.
Du vil sikre dig, at du logger ind på den server, som du troede, du var. Uanset hvad skal du kontrollere, om du stadig modtager sudo: ingen tty til stede og ingen askpass-program specificeret fejlmeddelelse. Mere end sandsynligt, hvis du stadig modtager det, vil du se det tre gange og muligvis endda blive bedt om at indtaste din adgangskode, som du ville have, hvis du kører sudo lokalt på Debian eller Ubuntu.
Prøv at tilføje -t efter ssh for at rette din syntaksfejl. Ni gange ud af ti vil dette tvinge ssh til at tildele en virtuel TTY til sig selv og lade som om det tilfældigvis kører inde i en rigtig terminal. Du behøver ikke ændre noget andet ved din kommando. Tilføj blot indstillingen -t efter bogstaverne ssh, og hold derefter værten og bestået kommandoen den samme. Du vil også gerne huske dette, hvis du nogensinde skal køre ssh i sidste del af din kommando.
For eksempel, hvis du får den samme slags fejl, når du kører en kommando, der er formateret som ssh -t [email protected] 'ssh [email protected]' du bliver nødt til at beholde indstillingen -t efter den første ssh for at forhindre det. Bemærk, at hvis du senere ændrede den anden kommando til enten at producere eller forbruge data, ville du slet ikke bruge -t. For eksempel, hvis du begyndte at køre kat i stedet for et script, kunne du dumpe -t, da du ikke behøver at tildele en terminal til det.
Metode 2: Patching af visudo-filen
Du kan også have et konfigurationsproblem, der producerer denne fejl. Rediger visudo-filen ved at udstede sudo visudo kommando, og husk at du aldrig vil redigere denne fil på nogen anden måde. Du skal finde en linje, der indeholder ALL = NOPASSWD, efterfulgt af de typer kommandoer, som du ikke behøver at indtaste administratorens adgangskode for at køre.
Hver enkelt kommando skal slutte med et komma undtagen den sidste på linjen. Således hvis du havde noget, der læste som / sbin / poweroff / sbin / start / sbin / stop, vil det behandle disse alle som en enkelt kommando og kaste fejlen mod dig. Ligeledes, hvis du mangler en kommando, som du prøver at køre via ssh, får du også denne fejl. Foretag de nødvendige justeringer, og gem filen, før du kontrollerer, om fejlen stadig kan reproduceres.
Hvis du stadig har fejlen, selv efter du har gjort det og genstartet tjenesten, så prøvfølgende kommando i billedet nedenfor og sørg for, at linjen PermitTTY indeholder ordet ja efter det. Hvis dette er den sidste linje i din fil, skal du sørge for, at der er en tom ny linje bagefter. GNU nano udfører denne opgave automatisk som standard.
Du bliver nødt til at genstarte alle relevante tjenester, før du forsøger at reproducere fejlmeddelelsen igen.