Un comando può essere eseguito su ssh con un utente nologin?


13

Se un utente ha loginShell=/sbin/nologinè ancora possibile

ssh user@machine [command]

supponendo che l'utente abbia le chiavi ssh nella sua home directory che possono essere usate per autenticarsi?

Il mio obiettivo è mantenere l'utente come nologin, ma ancora in grado di eseguire comandi su alcune altre macchine della rete (simile al suo uso tramite 'sudo -u'), e mi chiedo se questo sia un corso ragionevole.


1
Dovrebbe funzionare. La commandviene eseguito al posto della shell.
Orione,

1
Ciò vanifica lo scopo della configurazione /sbin/nologincome shell. Se la tua preoccupazione è la sicurezza dell'account, è sufficiente disabilitare l'autenticazione della password e usare le chiavi ssh.
Creek,

@Creek c'è una differenza tra shell di login e altre istanze di shell. Quindi, ciò che sta chiedendo non necessariamente vanifica lo scopo di / sbin / nologin. Può darsi che voglia eseguire qualche lavoro al di fuori del contesto di una shell di login.
Michael Martinez,

7
@orion Wrong. Il comando viene eseguito dalla shell di login.
Gilles 'SO- smetti di essere malvagio' il

@MichaelMartinez nel contesto del suo esempio, se la shell /sbin/nologindell'utente è quindi l'utente non sarà in grado di accedere o eseguire comandi sulla macchina. cronjobs può essere eseguito come utente e sftppuò essere configurato per aprire sessioni, ma l'apertura di una shell tramite ssh non avverrà
Creek

Risposte:


17

L'impostazione /sbin/nologincome shell dell'utente (o /bin/falseo /bin/true, che sono quasi equivalenti ) impedisce all'utente di accedere per eseguire qualsiasi comando. SSH invoca sempre la shell di accesso dell'utente per eseguire i comandi, quindi è necessario impostare la shell di accesso su quella in grado di eseguire alcuni comandi.

Esistono diverse shell limitate che consentono agli utenti di eseguire solo alcuni comandi. Per esempio rssh e scponly sono entrambi questi serbatoi che consentono all'utente di eseguire alcuni comandi predefiniti (ad esempio scp, sftp-server, rsync, ...). Vedi anche Limitare l'accesso degli utenti in Linux e hai bisogno di una shell per SCP?


Grazie, ho finito per rassegnarmi a dare all'account una shell di accesso in modo che potesse eseguire i comandi remoti. Probabilmente la soluzione migliore sarebbe stata ssh come utente corrente e chiamare sudo -u per il comando ssh, ma ciò non è del tutto applicabile nel mio caso.
Centimane,

1

Sembra che la risposta sia no.

ssh user@machine [command]

con i tasti ssh in posizione risulta solo in:

This account is currently not available

piuttosto che l'esecuzione del comando, sembra che dovrò dargli accesso a bash.


-4

Non so se sia possibile (dovrebbe essere facile da testare), ma esiste una funzione che probabilmente risponde alla tua domanda in un certo modo e in ogni caso risolve il tuo problema.

È possibile aggiungere un comando alla riga chiave in authorized_keys. In tal caso questo comando viene eseguito, nient'altro. Presumo che /sbin/nologinfunzioni con il fatto che la shell dovrebbe essere comunque ignorata.

Ma avresti bisogno di una chiave diversa per ogni comando che permetti.


Purtroppo la soluzione di cui ho bisogno dovrebbe essere più flessibile di questa
Centimane,

se è facile testarlo, allora dovresti testarlo prima di scrivere una risposta.
Michael Martinez,

@MichaelMartinez È compito dell'interrogante fare semplici test prima di chiedere. Non è difficile notare che non ha risposto alla domanda ma ha presentato una proposta per il problema che ha causato la domanda. Che è perfettamente adatto come risposta. Downvoting questo è solo stupido. Avresti criticato la risposta senza il primo paragrafo? Esattamente.
Hauke ​​Laging,

3
Il comando in authorized_keysviene eseguito dalla shell di login, quindi no, questo non funziona (non senza un'ulteriore configurazione non banale). (Come è downvoting una risposta sbagliata “stupido” Per favore? Rispettare gli altri .)
Gilles 'SO-tappa è male'
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.