Je n'ai pas réellement besoin d'exécuter la commande ci-dessous, et je connais les clés ssh si je voulais me connecter sans taper de mot de passe. Je voudrais juste savoir comment ssh
semble contourner ma redirection de fichiers.
Exécuter la commande suivante, ssh
me demande un mot de passe :
ssh [email protected] > /dev/null 2> /dev/null < /dev/null
Comment cela marche-t-il? stdin
, stdout
, et stderr
sont tous redirigés, mais ssh
parvient toujours à imprimer une invite sur mon écran et à lire ce que je tape. J'ai essayé d'ajouter le ssh
arguments -t -t
et -T
(pas les deux à la fois), pour activer ou désactiver l'allocation de pseudo-tty, mais cela n'a fait aucune différence.
J'ai également essayé de fermer toutes les entrées et sorties de cette façon, même si je ne sais pas si je l'ai tapé correctement. Pourtant, ssh
demande un mot de passe :
(exec 0<&- 1<&- 2<&- 0>&- 1>&- 2>&-; ssh [email protected])
Réponse acceptée :
Depuis OpenSSH readpassphrase.c, ligne 75 :
/*
* Read and write to /dev/tty if available. If not, read from
* stdin and write to stderr unless a tty is required.
*/
Le programme lit et écrit directement le TTY, il n'est donc pas possible de désactiver l'entrée directe en fermant simplement les canaux d'entrée et de sortie standard. Vous devez dire au client SSH d'utiliser un mot de passe fourni ou faire comme suggéré par @muru.