Je souhaite afficher une bannière (message de bienvenue) pour les utilisateurs SSH avec un message de bienvenue spécifique pour chaque utilisateur.
Vous n'avez pas précisé quel serveur SSH utilisez-vous. Je suppose OpenSSH.
Notez que la bannière SSH et le MOTD sont deux choses différentes.
Bien qu'il soit presque impossible de les distinguer dans un terminal SSH, ils ont un comportement différent, par exemple, dans un client SFTP.
Le MOTD est juste un texte imprimé sur un terminal interactif. Ainsi, il ne sera pas (et ne peut pas) être envoyé aux clients SFTP, par exemple (plus à ce sujet plus tard).
Le MOTD est codé en dur dans le /etc/motd
OpenSSH. Vous pouvez l'activer / le désactiver globalement uniquement, à l'aide de la PrintMotd
directive.
Sur certains systèmes Linux, cependant, le PrintMotd
est toujours désactivé et le MOTD est imprimé à la place par la pile PAM (à l'aide du pam_motd
module). Dans ce cas, vous pouvez le désactiver via le /etc/pam.d/sshd
ou spécifier un motd=
chemin personnalisé comme paramètre de module.
La bannière SSH est une fonctionnalité spéciale SSH 2.0, envoyée dans un paquet SSH spécifique (SSH2_MSG_USERAUTH_BANNER).
Ainsi, même les clients non terminaux, comme les clients SFTP, peuvent le traiter et l'afficher à l'utilisateur. Voyez par exemple comment la bannière s'affiche dans le client WinSCP SFTP / SCP .
La bannière SSH est configurable par utilisateur (ou groupe ou autres critères) en sshd_config
utilisant Banner
les Match
directives et :
Match User username1
Banner /etc/banner_user1
Match User username2
Banner /etc/banner_user2
Voir aussi Désactiver la bannière ssh pour des utilisateurs spécifiques ou ips .
Bien sûr, vous pouvez également utiliser une implémentation personnalisée pour le message / bannière. Imprimez simplement un message sélectionné à l'aide de votre logique personnalisée à partir d'un script de profil global.
Comme avec le MOTD, cela ne fonctionnera pas pour les sessions non interactives (SFTP et similaires).
Plus important encore, non seulement cela ne fonctionnera pas, vous devez vous assurer que vous imprimez le message pour un terminal interactif uniquement. Ce que OpenSSH fait automatiquement pour le /etc/motd
. Utilisez un script de profil global qui s'exécute pour un terminal interactif uniquement ou imprimez le message de manière conditionnelle en fonction de la valeur de la TERM
variable d'environnement.
Si vous imprimez le message pour une session non interactive, vous cassez tout client qui utilise un protocole strict, comme le SFTP ou le SCP, car le client tentera d'interpréter votre message texte comme un message de protocole, échouant gravement.
Voir par exemple la description d'un tel problème dans la documentation du client WinSCP SFTP / SCP .
(Je suis l'auteur de WinSCP)
groups|awk '{print $1}'
cat /etc/motd.${PGROUP} avant d'ajouter cette ligne, je crée un fichier de bannière pour chaque utilisateur dans le répertoire / etc. et fichier comme motd.root et motd.alex et ce travail pour moi.Vous pouvez également utiliser un
"$HOME/.ssh/rc"
fichier pour archiver ce que vous voulez faireAinsi, vous pouvez avoir un ssh rc pour chaque utilisateur.
la source