
Quiero ejecutar un comando automáticamente después de conectarme a otra máquina a través de ssh, sin que la sesión ssh se cierre automáticamente.
Después de buscar en Internet encontré algunas soluciones, pero ninguna funciona como necesito.
ssh bla@bla "ls"
Esto ejecuta el ls
comando en la máquina remota, me muestra el resultado y cierra la conexión.
También intenté editar el archivo de configuración ssh con
Host bla
HostName bla
User bla
IdentityFile ~/.ssh/key
RemoteCommand ls
RequestTTY force
El mismo problema, esto se conecta a través de ssh, ejecuta el ls
comando, me muestra el resultado y luego sale. Ni siquiera la RequestTTY
opción ayudó.
ssh bla@bla "ls ; bash"
Esto no se desconecta después de ejecutar ls
, pero no obtengo una interfaz de terminal completa, solo una línea de comando básica que no muestra el archivo me@machine:~$ thing
.
Lo que realmente quiero:
Ya sea algún alias de bash o .ssh/config
una entrada que me permitirá escribir un comando simple que se conectará a la máquina remota y luego ejecutará un comando allí y dejará la terminal abierta. Básicamente como si hiciera esto a mano:
tipo
ssh blah@blah
y luego, después de conectarlo, escribiría
ls
Respuesta1
ssh bla@bla "ls ; bash"
Esto no se desconecta después de ejecutar
ls
, pero no obtengo una interfaz de terminal completa, solo una línea de comando básica que no muestra lame@machine:~$
cosa.
Si especifica un comando (por ejemplo, ls ; bash
arriba), el servidor SSH no proporcionará un pseudoterminal. Has observado exactamente esto.
Por otro lado, sole ssh bla@bla
asigna un pseudoterminal de forma predeterminada. Entonces esto es lo que quieres. Forzar la asignación de pseudoterminales, el uso -t
o RequestTTY
.
Ni siquiera la
RequestTTY
opción ayudó.
No te ayudará si el comando remoto es ls
solo. Necesitas ls; bash
o similar.
Parece que cuando solicitaste un tty, no lo solicitaste bash
. Y cuando solicitó bash
después ls
, no solicitó un tty. Necesitas ambos:
ssh -t bla@bla "ls; bash"
Note ls
también utilizará el pseudoterminal. Lea la sección "panorámica más amplia" deesta respuesta míapara aprender la diferencia (especialmente donde dice "hay una peculiaridad").
Respuesta2
Para deshacerse de me@machine, debe configurar la variable de entorno PS1. Intentar:
ssh bla@bla "PS1=\"\"; ls; bash"