Tengo acceso SSH a una máquina FreeBSD que tiene svnadmin
(y el resto de las utilidades necesarias) instaladas. svn es la versión 1.7.9 (r1462340). Estoy en Windows 7 x64, usando Tortoise SVN 1.7.7.
he seguidoesta guía oficialpara ayudarme a configurar mi servidor y Tortoise SVN, pero tengo problemas para configurarlo.
Generé un par de claves públicas/privadas y las agregué al ~/.ssh/authorized_keys
archivo de mi servidor y a mi configuración de Putty respectivamente. Puedo conectarme a la máquina remota usando PuTTY y mi clave privada.
También intenté configurar Tortoise SVN para que haga lo mismo y me estoy conectando a:
svn+ssh://myBSDusername@it2svn/somerepo
¿Dónde it2svn
está el nombre dellaboralPerfil de conexión de PuTTY y somerepo
es un repositorio en la raíz de mi repositorio ( ~/svnroot/somerepo
).
El problema que ocurrees que Tortoise SVN solicita la frase de contraseña de mi clave y no importa cuántas veces la ingrese correctamente, el cuadro de diálogo de contraseña se cierra durante 1 o 2 segundos, después de lo cual me solicita la frase de contraseña una vez más.Ni siquiera dice que esté mal, sigue pidiéndome la contraseña una y otra vez.
Si ingreso intencionalmente una contraseña incorrecta, se me solicita nuevamenteinstantáneamente, sin el retraso de 1-2 segundos que se produce al entrar en el correcto. El cuadro de diálogo todavía no dice que esté mal a pesar de que estoy escribiendo un galimatías. Esto podría ser un error de su parte, pero aún así no explica por qué no se acepta mi contraseña correcta.
Configuración
Aquí está el contenido del authorized_keys
archivo (sin el contenido real de las claves):
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:la guía decía que mi línea de "comando" debería verse así:
command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>",
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
no-pty ssh-rsa <PublicKey> <Comment>
Pero la clave que generé usando ssh-keygen
los mismos parámetros que en la guía comienza con ssh-dss
en lugar de ssh-rsa
, por lo que ssh-rsa
se reemplaza en mi propio archivo por dss
(aparentemente porque la clave es una clave DSA y no una clave RSA).
Respuesta1
El problema que tuvo fue usar una frase de contraseña en su par de claves y no usar el concurso.
Cuando TortoiseSVn se conecta con un túnel SSH, parece realizar múltiples solicitudes separadas usando plink (o TortoisePLink). Cada vez que esto sucede, se necesita la clave SSH y, por lo tanto, debe desbloquearse y, por lo tanto, se produce la solicitud de contraseña.
Si no protege con contraseña el par de claves, no es necesario solicitar la contraseña.
Si configura pageant para cargar la clave antes de usar TortoiseSVN, entonces plink obtendrá la clave, ya desbloqueada y almacenada en caché, de pageant. De esta manera podrá utilizar una clave protegida con contraseña y no necesitará ingresar la contraseña repetidamente. Sin embargo, aún debes ingresarlo una vez al agregar la clave al concurso.
Respuesta2
Regeneré el par de claves usando PuttyGen y lo convertí en un par de claves RSA2 (en comparación con las antiguas claves DSA). También omití proteger mi clave privada con una frase de contraseña y ahora todo (mágicamente) funciona. No sé exactamente qué cambio solucionó realmente el problema, pero espero que esto ayude a algún futuro desarrollador con un problema similar.
Aquí están los contenidos (relevantes) de mi usuario ~/.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