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

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

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

eu tenho seguidoeste guia oficialpara me ajudar a configurar meu servidor e o Tortoise SVN, mas estou tendo problemas para configurá-lo.

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

Também tentei configurar o Tortoise SVN para fazer a mesma coisa e estou me conectando a:

svn+ssh://myBSDusername@it2svn/somerepo

Onde it2svnestá o nome dotrabalhandoPerfil de conexão 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 a 2 segundos, após os quais ele me solicita a senha novamente.Nem diz que está errado, ele continua me pedindo a senha repetidamente.

Se eu inserir propositalmente a senha errada, serei solicitado novamenteimediatamente, sem o atraso de 1-2 segundos que ocorre ao inserir o correto. A caixa de diálogo ainda não diz que está errado, embora eu esteja digitando algo sem sentido. Isso pode ser um bug da parte deles, mas ainda não explica por que minha senha correta não está sendo aceita.

Configuração

Aqui está o conteúdo do authorized_keysarquivo (com o conteúdo real das chaves removido):

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 minha linha de "comando" deveria ficar 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 gerei usando ssh-keygenos mesmos parâmetros do guia começa com ssh-dssem vez de ssh-rsa, e é por isso que ssh-rsaé substituída em meu próprio arquivo por dss(aparentemente porque a chave é uma chave DSA e não uma chave RSA).

Responder1

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

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

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

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

Responder2

Regenerei o par de chaves usando PuttyGen e tornei-o um par de chaves RSA2 (em vez das antigas chaves DSA). Também deixei de proteger minha chave privada com uma senha e agora tudo (magicamente) funciona. Não sei exatamente qual mudança realmente resolveu o problema, mas espero que isso ajude algum futuro desenvolvedor com um problema semelhante.

Aqui está o conteúdo (relevante) do meu usuário ~/.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

informação relacionada