Modo .ssh / config per specificare l'allocazione pseudo-tty e l'esecuzione del comando


13

Esiste un modo per specificare, in .ssh/config, un comando come:

ssh -t remote-host "screen -dR screen_name"

così posso facilmente accedere alla screensessione remota con ssh remote-host?

In questo momento ho risolto questo problema usando uno script personalizzato:

$ cat ~/bin/sssh 
#!/bin/sh

/usr/bin/ssh -t $1 "screen -dR ab"

~/binrimane il primo a $PATH, ma è poco flessibile e brutto.

Inoltre vorrei trovare il modo di implementare il completamento automatico dell'host per il mio script personalizzato.


Vorrei sostituire $1con $@. Quindi puoi aggiungere più opzioni, non solo il nome host. Per il completamento, prova a eseguire . /usr/share/bash-completion/completions/ssh, seguito dacomplete -F _ssh sssh
Alex Stragies

Risposte:


17

Per allocare tty come faresti con l' -topzione, inserisci RequestTTY forcecome voce nel file di configurazione ssh (di solito in ~/.ssh/config). Per eseguire sempre un comando sul server dopo la connessione, inserisci RemoteCommand COMMANDla voce, dove si COMMANDtrova il comando che desideri eseguire al momento della connessione. Per altre opzioni, selezionare 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

Direi che questo è il modo più flessibile. Uno script consente di impostare parametri, aggiungere condizionali, modificare il comando secondo necessità, il tutto in base agli input.

Ci sono modi per "forzare" il comando authorized_keys. Ma non conosco un modo per forzare l'allocazione tty se non dalla riga di comando o per forzare un comando sul server remoto dai file di configurazione lato locale.

Io stesso, ho uno script che analizza il file di configurazione, verifica il DNS con vari domini e imposta la stringa del titolo dell'emulatore di terminale. Lo chiamo dallo schermo sul mio sistema locale ( Ctrl-a g).


0

Nota: RemoteCommandinizia a lavorare con OpenSSH 7.6 . Nella versione precedente (ovvero l'attuale debian 9.9) il client ssh smetterà di funzionare correttamente (almeno con git pull).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.