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


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


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


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.