MOTH SSH por usuário


17

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.

Respostas:


38

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/motdno OpenSSH. Você pode ativar / desativar somente globalmente, usando a PrintMotddiretiva.

Em alguns sistemas Linux, no entanto, o PrintMotdestá sempre desativado e o MOTD é impresso pela pilha do PAM (usando o pam_motdmódulo). Nesse caso, você pode desativá-lo via /etc/pam.d/sshdou 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_configuso Bannerdas Matchdiretivas 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 TERMvariá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)


Oi tudo obrigado pela resposta, eu tenho a solução, por favor me corrija se eu estiver errado. Anexo estas linhas no arquivo / etc / profile. PGROUP = 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.
user260277

Isso deve fazer também. Exceto conforme minha resposta, isso funciona apenas em um terminal interativo. Não funcionará para SFTP e similares.
Martin Prikryl

terminal interativo significa?
user260277

É um terminal que um interage com humanos (como oposta à sessão de SFTP, sessão SCP ou terminal não-interativo usado para a execução remota de alguma tarefa batch)
Martin Prikryl

Incluí alguns detalhes complicados sobre a implementação personalizada do banner.
Martin Prikryl

9

Você também pode usar o "$HOME/.ssh/rc"arquivo para arquivar o que deseja fazer

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

Portanto, você pode ter um ssh rc para cada usuário.


oi, eu tentei isso, mas ele dá a mensagem de erro .ssh / rc: 1: .ssh / rc: welcom: não encontrado.
user260277

foi minha culpa, eu fiz um erro de digitação, você precisa ecoam como no script bash normais
c4f4t0r

"Wolrd" também é um erro de digitação :)
simon

Recebo "stty: entrada padrão: ioctl inadequado para o dispositivo".
Pausado até novo aviso.

o que você tem em .ssh / rc?
C4f4t0r
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.