.ssh / config forma de especificar la asignación de pseudo-tty y la ejecución del comando

13

¿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 screensesió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"

~/binse 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.

AB
fuente
Lo reemplazaría $1con $@. 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
Alex Stragies

Respuestas:

17

Para asignar el tty como lo haría con la -topción, colóquelo RequestTTY forcecomo 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, ingrese RemoteCommand COMMANDla entrada, donde COMMANDestá el comando que desea ejecutar al conectarse. Para otras opciones, consultar man ssh_config.

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name
Brian Albert Monroe
fuente
7

¡Usa la fuerza Luke!

RequestTTY forceen su ~/.ssh/configpara el host deseado.

Veaceslav Mindru
fuente
1

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).

Arcege
fuente
0

Nota: RemoteCommandcomienza 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 con git pull).

Mathissimo
fuente