Determine o nome da conta da máquina remota do usuário conectado via SSH

Determine o nome da conta da máquina remota do usuário conectado via SSH

Na empresa onde trabalho temos algumas contas compartilhadas que qualquer pessoa pode usar via SSH para realizar tarefas específicas. Neste ponto, temos muitos usuários e cada um deles tem suas próprias vantagens de usabilidade, como aliases de shell, etc.

O que estou tentando fazer é permitir que os usuários tenham diferentes configurações de shell, dependendo ~/.bash_profilede quem realmente efetuou login. Por exemplo, quando Jonathan efetua login, quero que o shell execute adicionalmente ~/.Jonathan_profilee, para Bob, quero que o shell seja o ~/.Bobperfil de origem.

Não tenho certeza, entretanto, se existe uma maneira de informar o nome da conta na máquina remota de um usuário conectado usando SSH.

Qualquer sugestão é muito apreciada.

Responder1

Você não pode saber qual conta o cliente está usando, porque o cliente não lhe informa. Mas há essas coisas que vocêpodefazer:

  1. Crie contas separadas e conceda aos usuários acesso à conta compartilhada usando sudo. Esta é a opção realmente preferida que oferece a melhor auditoria (é sempre registrado quem faz o quê) e os usuários podem colocar os utilitários que desejarem em suas contas. No entanto, também é muito trabalhoso.

  2. Use apenas autenticação de chave pública e defina a variável de ambiente a partir daí usando a sintaxe:

    environment="END_USER=whoever" ssh-rsa asdfasdfr...
    

    em .ssh/authorized_keys. Do que você olha $END_USERem .profile. Obviamente você deve configurá-lo para cada chave pública usada para fazer login.

  3. Diga a todos para definirem a variável de ambiente do cliente usando a SendEnvopção (o servidor deve ter AcceptEnvo conjunto correspondente). Novamente você verifica a variável em .profile.

  4. Obtenha o IP e a porta de origem da SSH_CONNECTIONvariável e use-o identpara obter o usuário de origem real; mas identdteria que estar rodando nos clientes e isso raramente acontece hoje em dia, porque não é muito útil, mas é útil para um invasor em potencial obter algumas informações sobre o seu sistema.

  5. Para uma personalização mais complicada em uma única conta, é sempre possível escrever um wrapper de shell personalizado e usá-lo com o commandatributo nas chaves autorizadas. Também dá bastante trabalho, mas pode ser usado para implementar quase todas as restrições e auditorias sem a necessidade de criar contas separadas.

Nota: eu certamente recomendaria apenas usar chaves públicas e desabilitar senha. Dessa forma, se você quiser cancelar o acesso de alguém, basta remover a chave.

informação relacionada