TortoiseSVN via SSH sem pedir senha
O TortoiseSVN é um excelente cliente SVN para Windows. Mas como qualquer software, ele também tem seus problemas.
Um de seus pecados é não ter uma maneira de carregar pra dentro dele um par de chaves para ser usado na comunicação como servidor via SSH.
O seu modo nativo só permite a autenticação via password. O problema é que isso é muito chato. Toda via que um update é acionado você tem que digitar a senha. Ou pior ainda: se você for explorar o repositório, você terá que digitar um milhão de vezes a senha.
Mas nem tudo está perdido. Nós podemos utilizar um outro software que poderá fazer este papel de capturar as conexões SSH e tentar a autenticação via par de chaves. Ele chama-se Pageant. É um aplicativo do projeto PuTTY. Segue abaixo o link:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Você pode baixar cada aplicativo do projeto separadamente ou então o Installer, no qual disponibilizará em um único pacote os mais importantes. Baixe o PuTTY Installer.
Vamos conhecer um pouco melhor os aplicativos que nos interessarão:
PuTTY
É um cliente terminal no qual suporta vários protocolos – inclusive o SSH.
PuTTYgen
Gera par de chaves, sendo que a chave privada é gerada no formato proprietário do PuTTY e a chave pública em outros formatos.
Ele também pode pegar uma chave já gerada via OpenSSH, por exemplo, e convertê-la para o PuTTY.
Pageant
Intercepta o início de uma conexão SSH e ofere para a mesma as chaves privadas cadastradas.
Você pode cadastrar diversas chaves privadas nele.
Usando o PuTTYgen
1. Gerando par de chaves RSA
Fique a vontade para pular este tópico se você já possuí um par de chaves RSA.
Gerar um par de chaves RSA no PuTTYgen é algo muito simples. Segue abaixo os passos:
a. Abra o PuTTYgen
Clique em “Generate” – uma barra de progresso irá aparecerc. Passe o mouse sobre a área “Key”. Você verá que a barra de progresso irá encher. Faça isso até que ela complete.
d. Clique em “Save Public Key” e salve a chave pública como id_rsa.pub – este é um nome padrão, mas você pode usar qualquer outro.
e. Clique em “Save Private Key” e salve a chave privada como id_rsa.ppk – este é um nome padrão, mas você pode usar qualquer outro.
Fato importando sobre a chave privada gerada: o arquivo .ppk gerado pelo PuTTYgen não é compatível com o OpenSSH. Se você precisar usar sua chave privada no OpenSSH, então você terá que exportá-la para este padrão. A chave privada gerada pelo PuTTYgen só serve para o projeto PuTTY.
2. Convertendo chave privada RSA no formato OpenSSH para o formato do PuTTY
Fique a vontade para pular este tópico se você gerou o seu par de chaves RSA utilizando o próprio PuTTYgen.
Se você possuí um par de chaves no formato OpenSSH, você terá que converter sua chave privada no formato .ppk para que os utilitário do projeto PuTTY saiba utilizá-la. Você pode fazer isso facilmente através do PuTTYgen:
a. Abra o PuTTygen
Clique em “Load”c. Carregue sua chave privada no formato OpenSSH (provavelmente o arquivo id_rsa)
d. Aparecerá uma mensagem dizendo que você deve gerar o arquivo .ppk. Clique em OK.
e. Clique em “Save private key” e salve a chave privada como id_rsa.ppk.
Registrando a chave pública no servidor
Para que os demais passos daqui em diante funcionem, você precisa registrar sua chave pública no seu usuário do servidor – aquele arquivo id-rsa.pub que você gerou. Se você não sabe como fazer isso, sugiro que primeiro você estude o POST abaixo. Depois volte aqui e releia com calma novamente todo este POST antes de continuar. Estes conceitos devem estar bem claros.
http://www.cezinha.info/2012/08/03/cliente-windows-ssh-autenticado-por-chave-rsa-no-servidor-linux/
Conhecendo o Pageant
Ao carregar o Pageant, o mesmo irá aparecer no tray icon do seu Windows.
A primeira coisa que nós precisamos fazer é registrar uma sessão. Este processo não é nada mais que configurarmos o PuTTY para ter acesso via SSH ao seu servidor.
Para isso siga os passos abaixo:
1. Clique com o botão direito sobre o Pageant no seu tray icon e selecione a opção “New Session”. Neste momento o PuTTy deve abrir.
2. Preencha em Host Name o usuario@servidor. No meu caso cezinha@192.196.0.1.
3. Selecione SSH em conection type
4. Em Saved Session preencha também com usuario@servidor.
Este passo é muito importante. Ele deve ser a mesma informação que você encontra na string de conexão do repositório SVN. Se algo estiver diferente – não funcionará! Por exemplo, a minha string de conexão do SVN lá no Tortoise é:
svn+ssh://cezinha@192.168.0.1/url/do/repositorio/trunk
5. Clique agora em “Save” para salvar as configurações.
Este processo é permanente, ou seja, mesmo que você feche o Pageant ele ficará gravado.
Carregando a chave privada
O próximo passo é carregar a sua chave privada no formato *.ppk. Para isso siga os passos:
1. Clique com o botão direito sobre o Pageant no seu tray icon e selecione a opção “View Keys”.
2. A tela “Pageant Key List” abrirá. Clique em “Add Key” e carregue o seu arquivo id_rsa.ppk (ou seja lá qual foi o nome que você deu a ele).
3. Basta clicar em “Close” e pronto!
Inicialização do Pageant
O Pageant é fantástico, mas ele peca em uma coisa: sempre que você reiniciar o computador você terá que abrir o Pageant e carregar a chave privada. No dia-a-dia isso não é prático, mas existe um jeito para isso. Você pode carregar as chaves através de linha de comando. Veja:
“C:\Arquivos de programas\PuTTY\pageant.exe” c:\chave1.ppk c:\chave2.ppk
Sugiro algumas alternativas:
a. Você pode criar um atalho para o Pageant e colocar no próprio atalho as chaves que você quer carregar.
a.1. Este atalho pode ser acionado sempre que você precisar ou;
a.2. Você pode colocar no menu “Inicializar” do Windows.
Você pode criar um arquivo .bat e registrar no “Run Once” do Register do Windows.Testando o TortoiseSVN
Se tudo estiver certo, no seu próximo uso do TortoiseSVN não mais abrirá a tela do PLink pra você digitar a senha do seu usuário SSH. Todo o processo de comunicação acontecerá sem que você perceba que uma autenticação ocorreu.
É muito importante você guardar bem a seu chave privada – o arquivo .ppk gerado pelo PuTTYgen. Se você perder terá que configurar tudo de novo no lado do servidor. E se alguém copiá-lo poderá se passar por você.