2012-09-18 10 views
24

Estoy tratando de conectarme a la máquina uno con ssh y luego me conecto a otra máquina dos con ssh. Pero este error:Error SSH al ejecutar un comando remoto: "stdin: no es un tty"

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

stdin: is not a tty 
+9

Prueba a agregar el indicador '-t' al primer' ssh'. Por cierto, dado que su pregunta no está relacionada con la programación, podría ser más apropiado en http://superuser.com/ – aland

+1

@aland. Usted tiene razón. Con la opción -t ejecutar. – Jhonathan

Respuesta

30

Al iniciar sesión en una concha, el host remoto supone que la conexión se realiza por un usuario humano. Por lo tanto, es razonable esperar que tengan control sobre el estándar en en el cliente. Es decir, el usuario está dando entrada en un terminal a través del teclado. Si el host remoto detecta que el usuario no es humano (porque la entrada no es un terminal - tty, sino otro proceso), puede advertir al usuario sobre esta condición inesperada.


Una demostración de la mala conducta discutido y cómo evitarlo (man ssh y buscar -t para una explicación más detallada).

$ 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 

... y el error:

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

es posible que desee hacer un túnel en su lugar:

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

Luego, en un terminal diferente:

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

Utilice direcciones IP como 192.168.0.11 si los alias de DNS no están configurados en el extremo remoto.

Cuestiones relacionadas