ssh-keygen com utilizador diferente para subversão
Pergunta
Eu não consigo descobrir como criar chaves públicas / privadas para outros usuários no meu servidor. No meu servidor, eu digite a seguinte através do shell
(uiserver): john:> ssh-keygen -t dsa
Depois disso, eu inserir os nomes e senha, que com sucesso resulta em uma chave privada e um par de chave pública para "john". Agora, quando eu usar essa chave para ssh em meu repositório Subversion (sentado em john), todas as ações são registradas como "john". Isso é perfeito.
Assim, na próxima, eu quero criar um par de chaves pública / privada para "George" para que ele possa acessar o meu servidor. Repeti o ssh-keygen do meu servidor. Então eu dei a chave privada para George. George instalado com sucesso a chave, mas cada vez que ele executa uma ação no repositório SVN, subversão registra suas ações como "John" em vez de "george". Como faço para obter o Subversion a reconhecer a diferença entre "George" e "João"?
Eu olhei em authorized_keys2 e notei que o comentário final para ambas as chaves é "john @ uiserver". Eu tentei editar o comentário, mas a subversão ainda não pode reconhecer a diferença entre George e John.
Detalhes adicionais
Eu tenho uma solução de trabalho metade com base na resposta de Juliano. Eu fui para "david" máquina (linux), fez as teclas / pub, chave pub anexo PRV para authorized_keys2 de John. Perfeito! SVN está registrando mudanças de David como david.
eu fui para "george" máquina (Windows XP), puttygen usada para criar chaves PRV / pub, chave pub anexo ao authorized_keys2 de John. George pode acessar svn, mas todas as suas mudanças ainda são registrados como john. Eu estou tentando solução túnel do bojo assim que eu descobrir onde configurá-lo no TortoiseSVN.
RESPOSTA
Eu usei a opção 2 da resposta de bojo. No final, tudo o que eu precisava fazer era adicione a seguinte linha ao meu authorized_keys2
command="svnserve -t --tunnel-user=george",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss <george's long public key> == meaningful comment
Eu também adicionei a linha
george=george's password
à minha / pathtorepository / conf / passwd para o meu arquivo de senhas subversão
Solução
Verifique as instruções sobre como usar o comando do usuário --tunnel aqui no svn manual do . Imagino a razão George está aparecendo como John é porque você não está dizendo a sessão ssh qual o usuário é, por isso é inadimplente na conta de John.
Para esclarecer, o poster original tem duas opções.
- Criar uma nova conta de utilizador para George. Isso pressupõe que ele tem acesso de super usuário.
- Gerar a segunda chave (idealmente George faz isso), Acrescentar ao arquivo .ssh / authorized_keys da conta de John, e adicionar o acima comandos vinculado ao arquivo .ssh / authorized_keys como descrito. O link também descreve como limitar o acesso do usuário adicional para a conta de John.
Outras dicas
Então eu dei a chave privada para George.
As chaves privadas são chamados privado por uma razão. Eles nunca se destinam a ser transferidos desta forma. George deve criar seu próprio par de chaves, em seu próprio ambiente do usuário. Mas isso não está relacionado com o problema que está ocorrendo. Chaves são fatores apenas primos de um número muito grande (simplificado e de fácil entendimento). A identidade do usuário não é parte da chave, mas um "rótulo" que está ligado à tecla, que o SSH não faz um monte de utilização.
De sua descrição, você está pedindo George para fazer login na conta de John através de SSH. O que determina o usuário que está conectado em ações SVN não está relacionado com o par de chaves usado para autenticação de qualquer forma, mas para o usuário que está realmente sendo registrado para.
Assim, George deve tem seu próprio login da conta para o servidor SVN, o repositório deve ser compartilhado por ambas as contas, e George deve usar suas próprias credenciais para acessar o servidor.
O John URL: svn + ssh: // john @ svn-server / path / to / repo
O George URL: svn + ssh: // george @ svn-server / path / to / repo
É este relacionado a este SO questão , apontando para a entrada do blog svn sobre prompts SSH para o mal nome de usuário ?
A solução foi a de criar um arquivo de configuração no diretório george .ssh e colocar o seguinte em:
Host uiserver
User george
Você pode dar uma tentativa usando:
ssh-keygen -C "george"