web-dev-qa-db-fra.com

Erreur SSH lors de l'exécution d'une commande à distance: "stdin: n'est pas un tty"

J'essaie de me connecter à la première machine avec ssh, puis de me connecter à une autre machine deux avec ssh. Mais obtenez cette erreur:

ssh [email protected] 'ssh [email protected]'

stdin: is not a tty
24
Jhonathan

Lors de la connexion à un shell, l'hôte distant suppose que la connexion est effectuée par un utilisateur humain. Par conséquent, il est raisonnable de s'attendre à ce qu'ils contrôlent standard in sur le client. C'est-à-dire que l'utilisateur donne une entrée sur un terminal via le clavier. Si l'hôte distant détecte que l'utilisateur n'est pas humain (car l'entrée n'est pas un terminal - tty, mais un autre processus), il peut avertir l'utilisateur de cette condition inattendue.


Une démonstration de la mauvaise conduite discutée et comment l'éviter (man ssh et recherchez -t pour une explication plus approfondie).

$ ssh -t genja.org 'ssh raptor.lan hostname\; uptime'
Host: genja.lan 
raptor
 21:17:27 up 3 days, 15 min,  1 user,  load average: 0.00, 0.00, 0.00
Connection to genja.org closed.

$ ssh genja.org uptime 
Host: genja.lan 
 21:17:43 up 12 days, 17:40,  1 user,  load average: 0.30, 0.08, 0.02

... et l'erreur:

$ ssh  genja.org 'ssh raptor.lan hostname\; uptime'
Host: genja.lan 
Permission denied (publickey,keyboard-interactive).

Vous voudrez peut-être faire un tunnel à la place:

ssh -L 4444:raptor.lan:22 genja.org

Ensuite, sur un autre terminal:

ssh -p 4444 localhost will give you a conenction straight to "raptor.lan"

Utilisez des adresses IP telles que 192.168.0.11 si les alias DNS ne sont pas configurés sur l'extrémité distante.