Normalmente, si le pasa un comando a ssh así
ssh me@example.com 'some-command.sh'
Obtiene una sesión no interactiva y ssh se cierra tan pronto como se ejecuta el comando (o script, o lo que sea). ¿Cómo puedo obtener una sesión interactiva y ejecutar un comando que he especificado desde mi máquina local? Por ejemplo, me gustaría poder abrir la pantalla y reiniciar una sesión de pantalla específica:
ssh me@example.com 'screen -r 12345'
pero esto no está permitido, devuelve el error "Debe estar conectado a un terminal". que supongo significa esencialmente "debe llamar a este comando desde un shell interactivo".
Como otro ejemplo, uso un montón de máquinas en el trabajo que a menudo requieren que use una cuenta compartida para tener derecho a hacer ciertas cosas (sí, lo sé: mala idea, pero no me culpes, no configuré cosas que manera), y generalmente tienen ksh como shell predeterminado. Me gustaría iniciar sesión, cambiar a bash (o zsh) y obtener el .bash_profile (o .zshrc) de mi propia cuenta. Esto sería fácil si pudiera establecer una sesión ssh interactiva y pasar un comando a la máquina remota para que se ejecute al iniciar sesión.
Tengo en mente una solución muy burlona (y no probada) que publicaré, pero espero que alguien conozca una mejor manera.
ACTUALIZACIÓN: para aquellos que no se dieron cuenta de esto, no estoy planeando hacer todo esto a mano, por lo que decirme que abra una sesión interactiva y luego hacerlo a mano en realidad no resuelve nada.
2ª ACTUALIZACIÓN: para intentar aclarar una vez más: estoy tratando de ejecutar comandos (arbitrarios) en el servidor (especificados programáticamente en el cliente) pero luego tengo una sesión interactiva abierta que se ve afectada por cualquier cosa hecha por esos comandos programáticos.
echo "command" | ssh user@remote_host