SVN via SSH não funciona no Windows com o Tortoise SVN

2

Eu tenho acesso SSH a uma máquina FreeBSD que possui svnadmin (e o restante dos utilitários necessários) instalado. O svn é a versão 1.7.9 (r1462340). Eu estou no Windows 7 x64, usando o Tortoise SVN 1.7.7.

Eu segui este guia oficial para me ajudar a configurar meu servidor e o Tortoise SVN, mas estou tendo problemas para configurá-lo para cima.

Eu gerei um par de chaves privadas / públicas e as adicionei ao arquivo ~/.ssh/authorized_keys do meu servidor e à minha configuração do Putty, respectivamente. Eu posso conectar-me à máquina remota usando putty e minha chave privada.

Eu também tentei configurar o Tortoise SVN para fazer a mesma coisa, e estou me conectando com:

svn+ssh://myBSDusername@it2svn/somerepo

Em que it2svn é o nome do perfil de conexão do trabalho Putty e somerepo é um repositório na raiz do meu repositório ( ~/svnroot/somerepo ).

O problema que ocorre é que o Tortoise SVN solicita a senha da minha chave e não importa quantas vezes eu a digite corretamente, a caixa de diálogo da senha é fechada por 1-2 segundos, após o que ela me pede a frase secreta mais uma vez. Ele nem mesmo diz que está errado , ele fica me pedindo a senha repetidamente.

Se eu propositadamente inserir a senha errada, eu sou solicitado novamente instantaneamente , sem o atraso de 1 a 2 segundos que ocorre ao entrar no momento certo. A caixa de diálogo ainda não diz que está errado, apesar de eu estar entrando em rabiscos. Isso pode ser um bug do lado deles, mas ainda não explica por que minha frase-senha correta não está sendo aceita.

Configuração

Aqui está o conteúdo do arquivo authorized_keys (com o conteúdo real das chaves removidas):

ssh-dss AAA....FuA== myBSDusername@ems

command="svnserve -t -r ~/svnroot --tunnel-user=svnAuthorDude",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss AAAA....IFuA== myBSDusername@ems

Nota importante: o guia disse que a minha linha de "comando" deveria ser assim:

command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>",
     no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
     no-pty ssh-rsa <PublicKey> <Comment>

Mas a chave que geramos usando ssh-keygen usando os mesmos parâmetros do guia começa com ssh-dss em vez de ssh-rsa , e é por isso que ssh-rsa é substituído no meu próprio arquivo por dss (aparentemente porque a chave é um DSA e não uma chave RSA).

    
por Andrei Bârsan 20.05.2013 / 23:54

2 respostas

0

Eu gerenciei o par de chaves usando o PuttyGen e criei um par de chaves RSA2 (em comparação com as chaves DSA antigas). Eu também pulei a proteção da minha chave privada com uma frase secreta, e agora tudo (magicamente) funciona. Eu não sei exatamente qual alteração realmente consertou o problema, mas espero que isso ajude algum desenvolvedor futuro com um problema similar.

Aqui estão os conteúdos (relevantes) dos meus usuários ~/.ssh/authorized_keys :

ssh-rsa AAAA...Wc= rsa-key-20130529

command="svnserve -t -r /user/rest/of/path/svnroot --tunnel-user=someuser",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...Wc= andrei
    
por 04.06.2013 / 22:28
1

O problema que você teve foi usar uma senha no seu par de chaves e não usar o concurso.

Quando o TortoiseSVn se conecta com um túnel SSH, parece fazer várias requisições separadas usando plink (ou TortoisePLink). Cada vez que isso acontece, a chave SSH é necessária e, portanto, precisa ser desbloqueada e, portanto, a solicitação de senha ocorre.

Se você não proteger o par de chaves com senha, não será necessário solicitar a senha.

Se você configurar o concurso para carregar a chave antes de usar o TortoiseSVN, então o plink irá obter a chave, já desbloqueada e armazenada em cache, a partir do pageant. Desta forma, você pode usar uma chave protegida por senha e não precisa digitar a senha repetidamente. Você ainda precisa inseri-lo uma vez ao adicionar a chave ao concurso.

    
por 19.06.2018 / 15:08