Dica rápida: svn update com repositório remoto através do protocolo svn+ssh

Normalmente eu utilizo o eclipse (com subversive e connector svnkit) para acessar meus repositórios svn, normalmente meus repositórios utilizam protocolos tunelados pelo ssh (svn+ssh://) e o eclipse sempre tomo conta disso de forma linda e maravilhosa com alguns cliques, porém um dia chega e eu realmente tenho que utilizar o svn no shell do linux por conta de um servido, mas só isso não é o problema.. o problema é o update pelo svn+ssh com uma autenticação falha.

Bem… sem mistérios, com frequencia eu custumo utilizar chaves rsa (ou dsa) para autenticação nesses casos, para não ficar colocando a senha a cada commit, update, delete e etc. etc. etc. então fiz o mesmo para o svn que eu iria utilizar no servidor, cirei um chave, para quem não conhece vou resumir:

você cria uma chave digitando “ssh-keygen” e em “~/.ssh” você terá duas chaves “id_rsa” e “id_rsa.pub“, você copia a chave “id_rsa.pub” para o servidor remoto no diretório “~/.ssh/authorized_keys” (caso o arquivo nao exista crie, ou se existir copie apenas a chave para dentro dele adicionado-o uma linha).

bem com as chaves ok basta digitar “ssh user@host” e você estará logado sem pedir senha (a não ser que vc tenha utilizado uma para criar as chaves), então eu faço o checkout:

svn checkout svn+ssh://user@host/path/to/repo

Show de bola, agora o problema vem com o “svn update“, quando eu tentava dar um update eu tinha o seguinte problea:

svn update localcopy/
<strong>LOCALUSER</strong>@host's password: _

Mas como ele ta pedindo a senha? eu tinha configurado as chaves? É… aí que mora o perigo, o svn update busco a informações do repositório e tento fazer o update, mas o infeliz tenta se logar com o usuário local, não sei porque. Lendo a documentação do svn update (http://svnbook.red-bean.com/en/1.4/svn-book.html#svn.ref.svn.c.update) eu vi o parâmetro –username, que em fim não funciona no nosso caso ele é somente para o usuário do repositório e o login nesse caso é do ssh (que também é o do repositório quando estamos utilizando o protocolo ssh) então depois de uma pesquisa rápida achei a solução aqui: http://www.linuxfromscratch.org/blfs/edguide/chapter02.html

Bem.. ele cria um arquivo de config no ~/.ssh que diz ao ssh para quando for requisitar uma conexão ao Host X fornecer como padrão o usuário X ao invés de utilizar o usuário logado no sistema como padrão e no final indica que para aquele host temos chaves RSA, concluindo:

Cria o arquivo “config” dentro de  ~/.ssh com o seguinte conteúdo:

Host diariodecodigos.info
User meu-usuario-remoto
RhostsRSAAuthentication yes

P.S: procurando pela internet também achei esses dois links, que teoricamente resolveriam meu problema, porém não resolveram:
http://svn.haxx.se/users/archive-2007-09/0802.shtml
http://www.svnforum.org/threads/34191-svn-update-svn-ssh-problem-Skipped

Abraços…

Nenhum post foi relacionado a este