2012-09-26 47 views
6

Tengo problemas para acceder a un repositorio SVN usando TortoiseSVN 1.7.8.TortiseSVN svn + ssh Error: no se puede conectar a un repositorio en la URL ... La conexión de red se cerró inesperadamente

El repositorio SVN está en una caja de CentOS 6.3 con openssh 5.3p1:81.el6 y parece funcionar correctamente.

# svnadmin --version 
# svnadmin, version 1.6.11 (r934486) 

puedo acceder al repositorio de otro cuadro de CentOS con este comando:

svn list svn+ssh://[email protected]/var/svn/joetest 

Pero cuando intento navegar el repositorio usando TortiseSVN desde una estación de trabajo de Windows 7 no soy capaz de hacerlo a través de la siguiente ruta:

svn+ssh://[email protected]/var/svn/joetest 

recibo el siguiente error de TortoiseSVN:

Unable to connect to a repository at URL 'svn+ssh://[email protected]/var/svn/joetest' To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file. Network connection closed unexpectedly

Puedo iniciar sesión vía SSH desde la estación de trabajo usando Putty.

Los resultados son los mismos si intento acceder como root.

le he dado la propiedad del repositorio /var/svn/ a USER:USER y corrió
chmod 2700 -R /var/svn/.

Como puedo acceder al repositorio a través de ssh desde otra caja Linux, los permisos no parecen ser el problema.

Cuando termine de ver el archivo de registro utilizando tail -fn 2000 /var/log/secure, veo lo siguiente cada vez que TortiseSVN pide la contraseña:

Sep 26 17:34:31 dev sshd[30361]: Accepted password for USER from xx.xxx.xx.xxx port 59101 ssh2 
Sep 26 17:34:31 dev sshd[30361]: pam_unix(sshd:session): session opened for user USER by (uid=0) 
Sep 26 17:34:31 dev sshd[30361]: pam_unix(sshd:session): session closed for user USER 

En realidad soy capaz de iniciar sesión, pero la sesión se cierra entonces de inmediato.

Me llamó la atención que la sesión se abre para el usuario por root (uid=0), que puede ser correcta, pero lo mencionaré en caso de que tenga algo que ver con el problema.

Miré en la modificación de la svnserve.conf, pero por lo que puedo decir, no se utiliza al acceder al repositorio a través de svn+ssh, una instancia svnserve privado se crea para cada acceder a través de este método. Del manual:

There's still a third way to invoke svnserve, and that's in “tunnel mode”, with the -t option. This mode assumes that a remote-service program such as RSH or SSH has successfully authenticated a user and is now invoking a private svnserve process as that user. The svnserve program behaves normally (communicating via stdin and stdout), and assumes that the traffic is being automatically redirected over some sort of tunnel back to the client. When svnserve is invoked by a tunnel agent like this, be sure that the authenticated user has full read and write access to the repository database files. (See Servers and Permissions: A Word of Warning.) It's essentially the same as a local user accessing the repository via file:/// URLs.

Los únicos valores no predeterminados en sshd_config son:

Protocol 2 # to disable Protocol 1 

SyslogFacility AUTHPRIV 

ChallengeResponseAuthentication no 

GSSAPIAuthentication yes 
GSSAPICleanupCredentials yes 

UsePAM yes 

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE 
AcceptEnv XMODIFIERS 

X11Forwarding no 

Subsystem  sftp /usr/libexec/openssh/sftp-server 

¿Alguna idea?

+0

Es sólo una idea, tratar sacando al USUARIO @ de la URL y espera a que la tortuga solicite las credenciales. No estoy seguro si funcionará, pero vale la pena intentarlo. – Scott

+0

Gracias por la sugerencia, pero el mismo resultado. – codewaggle

+0

Cuando abre el repo-navegador de tortugas, ¿qué error le da? – Scott

Respuesta

4

Finalmente encontré una solución para esto.En el FAQ de TortoiseSVN de todos los lugares:
TortoiseSVN Frequently asked questions

Desde el FAQ:
SVN+SSH: Connection closed unexpectedly

It has been reported that svn+ssh connections of the form svn+ssh://[email protected] which were previously working, stop working with TortoiseSVN 1.5. This seems to be related to plink, and occurs if you have a default hostname set in PuTTY.

If this is the case you can fix it by using regedit or regedt32 to clear HKEY_CURRENT_USER/Software/SimonTatham/Putty/Sessions/Default%20Settings/HostName.


Another user has reported the following server-side fix:

  • ssh into your account
  • cd ~
  • cp /etc/bashrc .bashrc
  • nano .bashrc
  • put a # before the line "mesg y" (which comments it out)
  • Ctrl+X to exit, press Y when prompted to save.

no probé el primer enfoque de la edición de mi registro.

El segundo enfoque de edición de la configuración de bash funcionó para mí.

Una nota sobre el método de configuración bash:

Si usted está en alojamiento compartido, el archivo .bashrc usuario es probable que se carga el archivo etc bashrc mundial//. No podrá editar el archivo global, por lo que deberá evitarlo.

Algunas posibles enfoques:

  • trate de añadir mesg n a su archivo .bashrc del usuario. No estoy seguro de si este funcionará o si debe colocarse antes o después de que se cargue el archivo global .

  • No incluya el archivo global y el código de la configuración en su archivo de usuario .bashrc.

  • Elimine la configuración mesg y del archivo global/etc/bashrc ya que es cargando. Esta cuestión se analiza cómo hacerlo: Use a grepped file as an included source in bash

+0

Estoy tratando de hacer exactamente lo mismo y recibo el mensaje de error idéntico que publicó anteriormente. Sin embargo, puedo conectarme a mi repositorio mediante el uso de la interfaz gráfica de usuario y la búsqueda con svn + ssh: // usuario @ ip/repo, pero no me permitirá hacerlo a través de la línea de comandos. ¿Has tenido suerte haciendo esto con la línea de comando? –

+0

@nkon Era un proyecto pequeño y ya no tengo acceso a ese servidor, por lo que no puedo probarlo. Sugiero que abra una pregunta e incluya todos los detalles sobre los comandos que funcionan y no funcionan junto con las entradas de registro y su configuración para SVN, SSH y BASH (similar a lo que incluí en mi pregunta y respuesta). Eso dará la mejor oportunidad para que alguien vea qué podría estar causando el problema. Agregue un comentario aquí después de crear la pregunta y lo echaré un vistazo. – codewaggle

2

Una cuestión de edad, pero todavía superior de la pila en Google, así que pensé que me gustaría compartir mi solución.

Simplemente, fue porque no tenía un directorio de "inicio" para mi usuario en el servidor. Cambiar el cliente SSH al plink.exe que viene con Putty (haga clic derecho en la carpeta | TortoiseSVN | Configuración | Red) me permitió ver el error a medida que aparecían las ventanas en la pantalla.

0

En mi caso, la causa era que el svnuser no tiene un shell (era/bin/false).
Esto no está visible en el registro ssh incluso con depuración ssh -vvv.

Cuando se tiene este tipo de problema que su salida de depuración se verá así

debug1: Entering interactive session. 
debug1: Remote: Forced command. 
debug1: Remote: Port forwarding disabled. 
debug1: Remote: Agent forwarding disabled. 
debug1: Remote: X11 forwarding disabled. 
debug1: Remote: Pty allocation disabled. 
debug1: Remote: Forced command. 
debug1: Remote: Port forwarding disabled. 
debug1: Remote: Agent forwarding disabled. 
debug1: Remote: X11 forwarding disabled. 
debug1: Remote: Pty allocation disabled. 
debug1: Sending environment. 
debug1: Sending env LANG = en_GB.UTF-8 
debug1: Sending command: svnserve -t 
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0 
debug1: channel 0: free: client-session, nchannels 1 

Cuando la cáscara se establece en/bin/bash los cambios de registro a

debug1: Sending env LANG = en_GB.UTF-8 
debug1: Sending command: svnserve -t 
Path: MyRepo 
URL: svn+ssh://[email protected]/MyRepo 
Cuestiones relacionadas