A resposta curta é não, o servidor aceitará qualquer login válido do ponto de vista do servidor.
Existem no entanto algumas soluções possíveis para alcançar o que você deseja. Teste e veja se os itens a seguir atendem às suas necessidades.
Observação de que isso pode ser suficiente para usuários "médios" e exige que você também controle os clientes. Usuários experientes encontrarão uma maneira de forjar a variável CLIENTUSER
usada abaixo.
Ao usar a diretiva AcceptEnv
em /etc/ssh/sshd_config
, você pode aceitar, por exemplo, uma variável chamada CLIENTUSER:
AcceptEnv CLIENTUSER
O próximo passo é forçar o login do usuário a um shell de login como:
ForceCommand /bin/bash -l
Reinicie seu serviço sshd e inclua o seguinte em / etc / profile
if [ -z "$CLIENTUSER" ] || [ "$CLIENTUSER" != "user3" ] && [ ! -z "$SSH_CLIENT" ]
then
echo 'Client logon not allowed'
logout
fi
Os itens acima serão desconectados de todos os clientes que não enviarem a variável CLIENTUSER
ou enviarem a variável CLIENTUSER
com outro valor além de user3
.
Você pode testar isso usando a seguinte linha de comando do cliente:
$ ssh user2@host
Client logon not allowed
$ CLIENTUSER=user3 ssh -o "SendEnv CLIENTUSER" user2@host
user2@host $
Como você pode ver, o CLIENTUSER
pode ser facilmente forjado a partir da linha de comando. Para evitar isso, você pode adicionar o seguinte ao cliente '/ etc / profile:
declare -r CLIENTUSER="$USER"
Quando o usuário tentar alterar o valor da variável CLIENTUSER
, ele receberá o seguinte erro:
bash: CLIENTUSER: readonly variable