MOTH SSH per utente


17

Voglio visualizzare un banner (messaggio di benvenuto) per gli utenti SSH con un messaggio di benvenuto specifico per ciascun utente.

Risposte:


38

Non hai specificato quale server SSH stai usando. Sto assumendo OpenSSH.

Si noti che il banner SSH e il MOTD sono due cose diverse.

Sebbene quasi indistinguibili in un terminale SSH, hanno un comportamento diverso, ad esempio in un client SFTP.


Il MOTD è solo un testo stampato su un terminale interattivo. Pertanto, non verrà (e non potrà) essere inviato ai client SFTP, ad esempio (ne parleremo più avanti).

Il MOTD è hardcoded /etc/motdin OpenSSH. Puoi accenderlo / spegnerlo solo a livello globale, usando la PrintMotddirettiva.

Su alcuni sistemi Linux, tuttavia, PrintMotdè sempre spento e il MOTD viene invece stampato dallo stack PAM (utilizzando il pam_motdmodulo). In questo caso è possibile disattivarlo tramite /etc/pam.d/sshdo specificare un motd=percorso personalizzato come parametro del modulo.


Il banner SSH è una funzione SSH 2.0 speciale, inviata in un pacchetto SSH specifico (SSH2_MSG_USERAUTH_BANNER).

Pertanto, anche i client non terminali, come i client SFTP, possono elaborarlo e mostrarlo all'utente. Guarda ad esempio come viene visualizzato il banner nel client SFTP / SCP di WinSCP .

Il banner SSH è configurabile per utente (o gruppo o altri criteri) sshd_confignell'uso Bannerdelle Matchdirettive e :

Match User username1
    Banner /etc/banner_user1

Match User username2
    Banner /etc/banner_user2

Vedi anche Disabilita banner ssh per utenti specifici o ips .


Ovviamente, puoi anche utilizzare un'implementazione personalizzata per il messaggio / banner. È sufficiente stampare un messaggio selezionato utilizzando la logica personalizzata da uno script di profilo globale.

Come nel MOTD, questo non funzionerà per le sessioni non interattive (SFTP e simili).

Ancora più importante, non solo non funzionerà, è necessario assicurarsi di stampare il messaggio solo per un terminale interattivo. Cosa fa OpenSSH automaticamente per /etc/motd. Utilizzare uno script di profilo globale che viene eseguito solo per un terminale interattivo oppure stampare il messaggio in modo condizionale in base al valore della TERMvariabile di ambiente.

Se si stampa il messaggio per una sessione non interattiva, si interrompe qualsiasi client che utilizza un protocollo rigoroso, come SFTP o SCP, poiché il client tenterà di interpretare il messaggio di testo come messaggio di protocollo, fallendo male.

Vedere ad esempio la descrizione di tale problema nella documentazione del client SFTP / SCP WinSCP .

(Sono l'autore di WinSCP)


Ciao a tutti grazie per la risposta, ho la soluzione per favore correggimi se sbaglio. Aggiungo queste righe nel file / etc / profile. PGROUP = groups|awk '{print $1}'cat /etc/motd.${PGROUP} prima di aggiungere questa riga creo un file banner per ciascun utente nella directory / etc. e file come motd.root e motd.alex e questo lavoro per me.
user260277,

Anche questo dovrebbe fare. Tranne per la mia risposta, questo funziona solo in un terminale interattivo. Non funzionerà per SFTP e simili.
Martin Prikryl il

terminale interattivo significa?
user260277,

È un terminale con cui interagisce un essere umano (al contrario della sessione SFTP, della sessione SCP o del terminale non interattivo utilizzato per l'esecuzione remota di alcune attività batch)
Martin Prikryl,

Ho incluso alcuni dettagli complicati sull'implementazione personalizzata del banner.
Martin Prikryl,

9

Puoi anche usare il "$HOME/.ssh/rc"file per archiviare ciò che vuoi fare

echo "echo Hello World" > /home/pluto/.ssh/rc
ssh pluto@localhost
Last login: Thu Dec 18 08:46:16 2014 from localhost.localdomain
Hello World

Quindi, puoi avere un ssh rc per ogni utente.


ciao, provo questo ma dà un messaggio di errore .ssh / rc: 1: .ssh / rc: welcom: non trovato.
user260277,

è stata colpa mia, ho fatto un refuso, hai bisogno dell'eco come nel normale script bash
c4f4t0r

"Wolrd" è anche un refuso :)
simon

Ottengo "stty: input standard: ioctl inappropriato per il dispositivo".
In pausa fino a nuovo avviso.

cosa hai in .ssh / rc?
c4f4t0r
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.