¿Hay alguna forma de especificar, en .ssh/config
, un comando como:
ssh -t remote-host "screen -dR screen_name"
para poder acceder fácilmente a la screen
sesión remota con ssh remote-host
?
En este momento resolví este problema usando un script personalizado:
$ cat ~/bin/sssh
#!/bin/sh
/usr/bin/ssh -t $1 "screen -dR ab"
~/bin
se queda primero en $PATH
, pero es poco flexible y feo.
También me gustaría encontrar la manera de implementar el autocompletado de host para mi script personalizado.
$1
con$@
. Luego puede agregar más opciones, no solo el nombre de host. Para completar, intente ejecutar. /usr/share/bash-completion/completions/ssh
, seguido decomplete -F _ssh sssh
Respuestas:
Para asignar el tty como lo haría con la
-t
opción, colóqueloRequestTTY force
como una entrada en el archivo de configuración ssh (generalmente en~/.ssh/config
). Para ejecutar siempre un comando en el servidor después de que se haya conectado, ingreseRemoteCommand COMMAND
la entrada, dondeCOMMAND
está el comando que desea ejecutar al conectarse. Para otras opciones, consultarman ssh_config
.fuente
¡Usa la fuerza Luke!
RequestTTY force
en su~/.ssh/config
para el host deseado.fuente
Yo diría que esta es la forma más flexible. Un script le permite configurar parámetros, agregar condicionales, cambiar el comando según sea necesario, todo basado en las entradas.
Hay formas de "forzar" el comando
authorized_keys
. Pero no conozco una forma de forzar la asignación de tty excepto desde la línea de comandos o forzar un comando en el servidor remoto desde los archivos de configuración del lado local.Yo mismo, tengo un script que escanea el archivo de configuración, comprueba el DNS con varios dominios y establece la cadena de título del emulador de terminal. Lo llamo desde la pantalla en mi sistema local ( Ctrl-a g).
fuente
Nota:
RemoteCommand
comienza a funcionar con OpenSSH 7.6 . En la versión anterior (es decir, Debian 9.9 actual) el cliente ssh dejará de funcionar correctamente (al menos congit pull
).fuente