¿Hay alguna manera de estructurar un solo comando para iniciar sesión a través de SSH en un servidor remoto y ejecutar un programa en el shell de inicio de sesión remoto?
En el manual de OpenSSH, se lee "Si se especifica el comando, se ejecuta en el host remoto en lugar de un shell de inicio de sesión". Entonces, por ejemplo, ssh user@server mail
iniciará sesión en el servidor remoto, mostrará el estado del buzón y luego lo regresará al shell local. ¿Hay alguna manera de permanecer en el shell remoto después de mostrar el estado del correo?
Además, ssh user@server [command]
no parece funcionar si el comando es un programa, por ejemplo vim o mutt. ¿Hay alguna manera de iniciar sesión en el shell remoto y ejecutar un programa mientras permanece en el shell remoto durante el programa y después de salir del programa, y finalmente sale de un logout
comando específico (al igual que en una sesión SSH normal)?
Eventualmente me gustaría poder poner un comando como un alias en el .bashrc local, para que pueda ejecutarse rápidamente cuando lo desee. Un ejemplo sería iniciar sesión a través de SSH en un servidor remoto y abrir mutt en el servidor remoto para leer o enviar correos electrónicos.
ssh remote@server mail ; ssh remote@server
:? Además, cualquier comando ejecutado de forma remota que necesite un terminal no sobrevivirá / funcionará a través de ssh ¿verdad?Respuestas:
¿Has probado
ssh -t user@server "mail && bash"
(o reemplazasbash
con el shell que quieras)?El
-t
es necesario con el fin de crear un pseudo-TTY para golpe para utilizar como un shell interactivo.fuente
mutt
dentro de untmux
oscreen
, y luego puedo conectar y volver a conectar a voluntad, además puedo ejecutar tantos shells adicionales como quisiera.exit
lugar delogout
. Todavía no puedo probarlo con mutt (o similar).-t
opción produce algún tipo de problema de seguridad? No he usado esto antes.&&
con a;
?