Lors de la tentative d'exécution d'un fichier binaire distant à l'aide sudo
de la boîte distante:
ssh remotehost "sudo ./binary"
Je vois cette erreur:
sudo: aucun tty présent et aucun programme askpass spécifié
Comment puis-je contourner cela?
EDIT, ce n’est certainement pas un double de la question suggérée en tant que telle. Les réponses sont totalement hors de propos. En fait, ces modifications apportées au fichier sudoers ont déjà été appliquées à l'hôte distant.
ssh
remote-access
Drew Noakes
la source
la source
Réponses:
Un moyen simple est de spécifier
-t
:De la page de manuel:
Je ne peux pas expliquer exactement pourquoi cela fonctionne, et il pourrait y avoir un meilleur moyen. J'aimerais en entendre parler si oui :)@psusi explique pourquoi cela fonctionne dans un commentaire ci-dessous.
la source
sudo
demande à un tty de demander un mot de passe, et lorsqu’il spécifie les commandes à exécuterssh
, il n’en attribue pas un par défaut, car il est normalement utilisé pour exécuter des commandes non interactives susceptibles de transférer des données binaires, ce qui peut provoquer le déclenchement du tty. .-tt
nécessaire de passer un commandement en utilisant heredocQuestion:
Comment puis-je contourner cela?
Réponse alternative
Au lieu de cela, essayez:
sudo -S ./binary
Ceci oblige sudo à lire le mot de passe à partir de l'entrée standard, stdin.
Scénarios où cela aide
Dans les environnements chrootés, ces autres réponses peuvent ne pas fonctionner correctement ... peut-être parce que:
Par exemple: Installation / réparation manuelle de Linux ou du chargeur de démarrage, à l'aide d'un environnement chroot (tel que Archlinux et arch-chroot).
la source
Vous devez définir un terminal / une application qui lira le mot de passe. Il y a deux variantes:
export SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass
vim /etc/sudoers
(Par défaut visiblepw)la source
visudo
plutôt quevim /etc/sudoers
pour éviter d’être bloqué en dehors de votre machine à cause d’une erreur de montage?Il échoue car il
sudo
essaie de demander le mot de passe root et aucun pseudo-tty n'est alloué.Vous devez soit vous connecter en tant que root, soit configurer les règles suivantes dans votre
/etc/sudoers
(ou:)sudo visudo
:Ensuite, assurez-vous que votre utilisateur appartient au
admin
groupe (ouwheel
).la source
Vous pouvez également créer un fichier du type "sudo_shutdown" dans /etc/sudoers.d, avec le contenu:
Cela permet aux utilisateurs du groupe adm de s’arrêter sans mot de passe.
la source
Dans mon cas, j'ai reçu cette erreur parce que je ne spécifiais pas de commande que je voudrais utiliser comme racine dans sudoers
Quelque chose comme
/etc/sudoers.d/myuser
:a travaillé pour moi
la source