Quero exibir um banner (mensagem de boas-vindas) para usuários do SSH com uma mensagem de boas-vindas específica para cada usuário.
Você não especificou qual servidor SSH você está usando. Estou assumindo o OpenSSH.
Observe que o banner SSH e o MOTD são duas coisas diferentes.
Embora quase indistinguíveis em um terminal SSH, eles têm um comportamento diferente, por exemplo, em um cliente SFTP.
O MOTD é apenas um texto impresso em um terminal interativo. Portanto, não será (e não poderá) ser enviado para clientes SFTP, por exemplo (mais sobre isso mais tarde).
O MOTD é codificado /etc/motd
no OpenSSH. Você pode ativar / desativar somente globalmente, usando a PrintMotd
diretiva.
Em alguns sistemas Linux, no entanto, o PrintMotd
está sempre desativado e o MOTD é impresso pela pilha do PAM (usando o pam_motd
módulo). Nesse caso, você pode desativá-lo via /etc/pam.d/sshd
ou especificar um motd=
caminho personalizado como parâmetro do módulo.
O banner SSH é um recurso especial do SSH 2.0, enviado em um pacote SSH específico (SSH2_MSG_USERAUTH_BANNER).
Assim, mesmo clientes não terminais, como clientes SFTP, podem processá-lo e exibir ao usuário. Veja como o banner é exibido no cliente WinSCP SFTP / SCP, por exemplo.
O banner SSH é configurável por usuário (ou grupo ou outro critério) no sshd_config
uso Banner
das Match
diretivas e :
Match User username1
Banner /etc/banner_user1
Match User username2
Banner /etc/banner_user2
Consulte também Desativar banner ssh para usuários ou ips específicos .
Obviamente, você também pode usar uma implementação personalizada para a mensagem / banner. Simplesmente imprima uma mensagem selecionada usando sua lógica personalizada a partir de um script de perfil global.
Assim como no MOTD, isso não funcionará para sessões não interativas (SFTP e similares).
Mais importante, além de não funcionar, você precisa imprimir a mensagem apenas para um terminal interativo. O que o OpenSSH faz automaticamente para o /etc/motd
. Use um script de perfil global que seja executado apenas para um terminal interativo ou imprima a mensagem condicionalmente com base no valor da TERM
variável de ambiente.
Se você imprimir a mensagem para uma sessão não interativa, interrompa qualquer cliente que use um protocolo estrito, como o SFTP ou o SCP, pois o cliente tentará interpretar sua mensagem de texto como uma mensagem de protocolo, com falha grave.
Veja, por exemplo, a descrição desse problema na documentação do cliente WinSCP SFTP / SCP .
(Eu sou o autor do WinSCP)
groups|awk '{print $1}'
cat /etc/motd.${PGROUP} antes de adicionar esta linha, crio um arquivo de banner para cada usuário no diretório / etc. e arquivo como motd.root e motd.alex e este trabalho para mim.Você também pode usar o
"$HOME/.ssh/rc"
arquivo para arquivar o que deseja fazerPortanto, você pode ter um ssh rc para cada usuário.
fonte