Opzione di command SSH authorized_keys: comandi multipli?

Il_key autorizzati ha un command = "…" che limita una chiave a un singolo command. C'è un modo per limitare una chiave a più comandi? Ad esempio, avere una regex o modificare un altro file di configuration?

  • Esegui più comandi su SSH come sudo
  • ssh login successful, ma la password scp mi dà "Permission denied"
  • Fare ssh più facile per la nostra comunità di utenti di Windows
  • Controllare le versioni OpenSSH e le istruzioni di aggiornamento sul sistema FreeBSD
  • Tunnel di inversione multiple di SSH usando la port singola
  • Come fermare SSH dalla caduta alla password?
  • Autorizzazione ssh agente in una session di session distaccata
  • Come elencare le chiavi pubbliche di SSH in OpenSSH?
  • 4 Solutions collect form web for “Opzione di command SSH authorized_keys: comandi multipli?”

    No. Non è il command "consentito", ma il command "forzato" (come opzione ForceCommand ).

    L'unica possibilità è utilizzare chiavi diverse per diversi comandi o leggere parametri da stdin .

    Puoi avere un solo command per chiave, perché il command è "forzato".

    Ma è ansible utilizzare uno script wrapper. Il command chiamato ottiene la row di command originale come variabile di ambiente $SSH_ORIGINAL_COMMAND , che può valutare.

    Ad esempio, mettere questo in ~/.ssh/allowed-commands.sh :

     #!/bin/sh # # You can have only one forced command in ~/.ssh/authorized_keys. Use this # wrapper to allow several commands. case "$SSH_ORIGINAL_COMMAND" in "systemctl restart cups") systemctl restart cups ;; "shutdown -r now") shutdown -r now ;; *) echo "Access denied" exit 1 ;; esac 

    Poi fai riferimento a ~/.ssh/authorized_keys con

     command="/home/user/.ssh/allowed-commands.sh",… 

    Nel grande SSH, The Secure Shell: Il libro di guida definitivo di O'Reilly, nel capitolo otto, c'è un bel esempio dato usando uno script come il seguente:

     #!/bin/sh /bin/echo "Welcome! Your choices are: 1 See today's date 2 See who's logged in 3 See current processes q Quit" /bin/echo "Your choice:" read ans while [ "$ans" != "q" ] do case "$ans" in 1) /bin/date ;; 2) /usr/bin/who ;; 3) /usr/bin/top ;; q) /bin/echo "Goodbye" exit 0 ;; *) /bin/echo "Invalid choice '$ans': please try again" ;; esac /bin/echo "Your choice:" read ans done exit 0 

    Utilizzando questo nel tuo file .authorized_keys come:

     command="/path/to/your/script.sh" <ssh-key> 

    … ti dà questo quando fa ssh :

     Welcome! Your choices are: 1 See today's date 2 See who's logged in 3 See current processes q Quit Your choice: 

    Altri approcci utilizzano ad esempio una shell limitata per l'utente specificato o utilizza un wrapper che restringe i comandi ai file / script di alcool trovati in una directory specifica, consentendo così di aumentare l'elenco dei comandi senza cambiare il wrapper.

    Un altro articolo descrive uno script generico, che consente anche gli argomenti della row di command ai comandi consentiti, ma consente di bloccarli con regole espresse come espressioni regolari.

    Questo esempio sarebbe express nel modo seguente:

     command="only systemctl shutdown" 

    E un file .onlyrules sarebbe stato creato con questo contenuto:

     \:^systemctl restart cups$:{p;q} \:^shutdown -r now$:{p;q} 

    Il vantaggio di questo approccio "unico" è che non c'è bisogno di scrivere singoli script per each utente e situazione.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.