Comando remoto en el archivo de configuración ssh

12

Me gustaría configurar ssh_config para que, después de escribir, ssh my_hostnametermine en una carpeta específica. Justo como escribiría cd /folder/another_one/much_much_deeper/.

¿Cómo puedo lograr eso?

EDITAR. Se han marcado como duplicado de "Cómo ssh en dir ..." sin embargo, es no mi pregunta.

Sé que puedo ejecutar cualquier comando siguiéndolos al sshcomando. Mi pregunta es sobre el /ssh_configarchivo, no el comando.

Kazz
fuente
He aclarado mi pregunta.
Kazz
No hay nada de eso en man ssh_config. El más cercano es LocalCommand pero no se puede usar para comandos interactivos.
lgeorget
1
¿Podría explicar (en su pregunta) por qué cree que se debe hacer el cambio ssh_config? Probablemente haya mejores lugares para configurar el directorio de inicio, y sería útil comprender por qué existe esta restricción particular en una posible solución.
roaima
1
El hecho de que "no se puede hacer en ssh_config" no hace que esto sea un duplicado de "hazlo en Bash". "No puedes hacer eso" es una respuesta perfectamente válida.
Franklin Yu
1
@terdon Sin embargo, el hecho de que "no es posible" puede cambiar con el tiempo. Sí, es posible ahora. Ahora, yo (y cualquier persona que venga a ver esto en el futuro) necesito una nueva respuesta, y nos quedamos atrapados aquí. Si esto no se vuelve a abrir, me imagino que el camino deseado es crear una nueva pregunta (y responderla).
Franklin Yu

Respuestas:

19

No había forma de hacerlo, hasta OpenSSH 7.6 . Del manual :

RemoteCommand

Especifica un comando para ejecutar en la máquina remota después de conectarse con éxito al servidor. La cadena de comando se extiende hasta el final de la línea y se ejecuta con el shell del usuario. Argumentos para RemoteCommandaceptar los tokens descritos en la sección TOKENS .

Entonces ahora puedes tener

RemoteCommand cd /tmp && bash

Fue introducido en este commit .

Franklin Yu
fuente
55
Agregue RequestTTY forcesi el comando remoto requiere un TTY. Por ejemplo:tmux new -As my-session
Aaron Blenkush el
Esta es la sshopción asesina ¡Gracias!
nhed
Esto hace que sea imposible ejecutar otros comandos, por ejemplo ssh my_hostname lsfallará con Cannot execute command-line and remote command.. Hace que otras herramientas que usan ssh como git y rsync también fallen.
remram
2

Me gustaría configurar ssh_config para que después de escribir ssh my_hostname

No es posible. No hay opción para lograr eso en ssh_config. Lo más cercano a esto es configurar un alias bash o una función bash, como

myssh() {
    ssh -t $1 "cd /dir/; bash"
}
Jakuje
fuente
1

Respondí con un boleto diferente antes de que Somoene hubiera señalado que este era el original.

Si usa una Mac, mi recomendación es usar iTerm2 y crear un perfil. Ponga ssh my_hostnameen la línea de comando y luego agregue el comando cd /folder/another_one/much_much_deeper/en el texto de envío en el campo de inicio. Cuando se conecte a las sesiones, enviará ssh a su nombre de host y cd al directorio en su caso, o ejecutará un comando.

Govna
fuente