J'essaie de me connecter à la machine 1 avec ssh, puis de me connecter à une autre machine 2 avec ssh, mais j'obtiens cette erreur.
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
Pourquoi ?
Réponse acceptée :
Par défaut, lorsque vous exécutez une commande sur la machine distante à l'aide de ssh, aucun TTY n'est alloué à la session distante. Cela vous permet de transférer des données binaires, etc. sans avoir à gérer les bizarreries du TTY. C'est l'environnement fourni pour la commande exécutée sur computerone
.
Cependant, lorsque vous exécutez ssh sans commande à distance, il alloue un TTY, car vous êtes susceptible d'exécuter une session shell. Ceci est attendu par ssh [email protected]
commande, mais à cause de l'explication précédente, il n'y a pas de TTY disponible pour cette commande.
Si vous voulez un shell sur computertwo
, utilisez ceci à la place, ce qui forcera l'allocation TTY lors de l'exécution à distance :
ssh -t [email protected] 'ssh [email protected]'
Ceci est généralement approprié lorsque vous exécutez éventuellement un shell ou un autre processus interactif à la fin de la chaîne ssh. Si vous alliez transférer des données, il n'est ni approprié ni obligatoire d'ajouter -t
, mais alors chaque commande ssh contiendrait une commande produisant ou consommant des données, comme :
ssh [email protected] 'ssh [email protected] "cat /boot/vmlinuz"'