Konfigurer Interaktivt Shell Script til SSH og Kør Root Kommando Uden Fejl

Hvordan kan et interaktivt shell script konfigureres til at ssh til en anden maskine og udføre en kommando som root uden at få fejlen "sudo: no tty present and no askpass program specified"?

For at konfigurere et interaktivt shell script til at SSH til en anden maskine og udføre en kommando som root uden fejl, skal du opsætte SSH-nøgler, konfigurere sudoers filen korrekt og oprette samt køre dit shell script.

Sådan konfigureres et interaktivt shell script til at SSH til en anden maskine og udføre en kommando som root uden fejl

For at konfigurere et interaktivt shell script til at SSH til en anden maskine og udføre en kommando som root uden at få fejlen "sudo: no tty present and no askpass program specified", kan du følge disse trin:

  1. Opsæt SSH-nøgler:
    • Generer en SSH-nøgle på din lokale maskine ved at køre ssh-keygen.
    • Kopier den offentlige nøgle til den eksterne maskine ved hjælp af ssh-copy-id user@remote_host.
  2. Konfigurer sudoers filen:
    • Log ind på den eksterne maskine.
    • Rediger sudoers filen ved at køre sudo visudo.
    • Tilføj følgende linje for at tillade den specifikke bruger at køre kommandoer uden en tty:
      Defaults:user_name !requiretty
    • Tilføj følgende linje for at tillade den specifikke bruger at køre sudo kommandoer uden at blive bedt om en adgangskode:
      user_name ALL=(ALL) NOPASSWD: ALL
  3. Opret og kør dit shell script:
    • Opret et shell script, der bruger SSH til at logge ind på den eksterne maskine og udføre en kommando som root. For eksempel:
      #!/bin/bash
      ssh user@remote_host "sudo your_command"
              
    • Gør scriptet eksekverbart ved at køre chmod +x your_script.sh.
    • Kør scriptet ved at køre ./your_script.sh.

Ved at følge disse trin kan du konfigurere et interaktivt shell script til at SSH til en anden maskine og udføre en kommando som root uden at støde på fejlen "sudo: no tty present and no askpass program specified".