SSH executado como usuário sem privilégios, autenticação customizada, sem shells

1

Gostaria de ter um servidor SSH em execução em uma porta não privilegiada (digamos, 2222) de modo que eu pudesse fazer com que os usuários pudessem usar o Bazaar DVCS ; a idéia seria todo um conjunto de repositórios e similares seriam de propriedade de um único usuário (do ponto de vista do sistema operacional, isto é) e, em seguida, o servidor SSH que está sendo executado sob o contexto dessa conta de usuário único seria configurado com usuários e senhas de algum tipo de fonte personalizada.

As grandes coisas que seriam necessárias para fazer este trabalho seriam:

  • O servidor SSH seria forçado a executar um programa de shell personalizado que verificaria o nome de usuário e verificaria a linha de comando para garantir que o usuário estivesse acessando um bzr repositório / filial que o usuário tem autorização para usar.
  • O servidor SSH seria capaz de garantir que alguma variável de ambiente seja configurada para indicar qual nome de usuário foi autenticado com êxito (caso contrário, nada disso funcionaria).

Eu gostaria de fazer isso porque pode ser problemático manter as permissões nos repositórios corretas para um repositório com acesso compartilhado por meio do servidor SSH do sistema; Além disso, gostaria que o servidor SSH fosse eventualmente executado como parte de um serviço mais completo (com uma interface Web, etc.) de modo que o serviço da Web gerenciasse os usuários e grupos de trabalho associados a uma série de repositórios do Bazaar (e mesmo possivelmente ramos). Como o serviço geral seria executado como um único usuário no nível do sistema operacional e usaria sua própria noção de contas de usuário (talvez até mesmo coisas como o OpenID), seria muito útil integrar essencialmente o servidor SSH ao serviço como um todo.

    
por Michael Trausch 22.03.2011 / 03:25

1 resposta

1

Eu strongmente sugiro que você olhe como gitosis e gitolite resolvem isso (através do uso de authorized_keys e sua capacidade de configurar um comando forçado, idealmente aceitando um nome de usuário como parte da linha de comando em vez de alterar o ambiente).

    
por 22.03.2011 / 06:02