Esegui un comando remoto utilizzando il file di configurazione ssh


32

Mi piacerebbe essere in grado di impostare un comando per l'esecuzione su login ssh su un server, senza bisogno di digitarlo. Fondamentalmente sto cercando l'equivalente del file di configurazione ssh di:

ssh host command

in modo che tutto ciò che devo scrivere sia:

ssh host

e il comando viene eseguito.

Risposte:


16

È anche possibile inserire un comando nel file delle chiavi autorizzato. ( ~/.ssh/authorized_keys). Ciò consente di eseguire un comando personalizzato per ogni chiave nel file. Lo uso per inoltrare le connessioni shell attraverso il mio firewall. Il risultato è che posso ssh a un host e si collega automaticamente la sessione a un host all'interno della rete. La authorized_keysvoce è simile alla seguente:

command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...

Più specificamente il reindirizzamento è per la mia istanza di gitolite. Ciò consente un semplice accesso esterno senza esporre direttamente l'host gitolite a qualsiasi accesso esterno. Controlla la pagina man per maggiori informazioni. ( http://linux.die.net/man/8/sshd )


1
È fantastico, non sapevo che potevi farlo. +1
Brian Wigginton,

3
Se inserisci il comando nel tuo file authorized_keys, si romperanno cose come rsync e scp - otterrai qualcosa del genere: open terminal failed: non un terminale. Inoltre, tieni presente che se il comando fallisce non sarai in grado di accedere. L'ho scoperto nel modo più duro.
John Hunt,


10

È possibile impostare un alias bash.

Nel tuo file .bashrc, inserisci:

alias ssl='ssh some_host run_command'

Quindi non dovresti nemmeno digitare il nome host.

Oppure, se vuoi farlo con più host (e più alias non funzionerebbero), usa un piccolo script:

kevin@box:~$ cat ssl.sh
#!/bin/sh
ssh $1 some_command
kevin@box:~$

2

Si risolve a freddo questo nel tuo .ssh/config file, per l'host in cui si desidera eseguire un comando, aggiungere

  RequestTTY yes
  RemoteCommand <some command>

dov'è il <some command>tuo comando. Funziona anche con schermo o tmux.

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.