Estoy tratando de conectarme a la máquina uno con ssh y luego conectarme a otra máquina dos con ssh, pero aparece este error.
ssh [email protected] 'ssh [email protected]'
stdin: is not a tty
¿Por qué?
command-line
ssh
terminal
Jhonathan
fuente
fuente
ssh
!Respuestas:
De forma predeterminada, cuando ejecuta un comando en la máquina remota utilizando ssh, no se asigna un TTY para la sesión remota. Esto le permite transferir datos binarios, etc. sin tener que lidiar con caprichos de TTY. Este es el entorno proporcionado para el comando ejecutado en
computerone
.Sin embargo, cuando ejecuta ssh sin un comando remoto, SÍ asigna un TTY, porque es probable que esté ejecutando una sesión de shell. El
ssh [email protected]
comando espera esto , pero debido a la explicación anterior, no hay TTY disponible para ese comando.Si desea un shell activado
computertwo
, use esto en su lugar, lo que forzará la asignación de TTY durante la ejecución remota:Esto suele ser apropiado cuando finalmente está ejecutando un shell u otro proceso interactivo al final de la cadena ssh. Si iba a transferir datos, no es apropiado ni necesario agregarlos
-t
, pero cada comando ssh contendría un comando productor o consumidor de datos, como:fuente
Hay una mejor manera de usar SSH como un relé: use la
ProxyCommand
opción. Deberá tener una clave en la máquina del cliente que le permita iniciar sesión en la segunda computadora (la clave pública es la forma recomendada de usar SSH en la mayoría de las circunstancias de todos modos). Pon esto en tu~/.ssh/config
y corressh computertwo
.nc
es netcat . Cualquiera de las varias versiones disponibles servirá.fuente
Se espera una terminal interactiva en un dispositivo tty en el servidor intermedio.
Si prueba este comando, debería funcionar:
Ver
man ssh
para la-t
opción.fuente
Resolví esto agregando RequestTTY Sí a mi archivo de configuración ssh ubicado en ~ / .ssh / config de esta manera ...
fuente
Puede usar la opción PROXY Jump en ssh
Entonces, si necesito conectarme a hostB pero primero tengo que pasar por hostA para llegar allí. Normalmente lo haría
Ahora hago esto
fuente
Puede anular una opción de configuración SSH "RequestTTY" desde la línea de comandos.
Mi ejemplo de trabajo
cd-serv-one.sh
comienza/bin/bash
en la sesión SSH después de ejecutar varios comandos:Y ahora solo corro
./cd-serv-one.sh
para comenzar una sesión SSH necesaria.fuente