TortiseSVN Błąd svn + ssh: nie można połączyć się z repozytorium przy adresie URL… Połączenie sieciowe zostało nieoczekiwanie zamknięte
Mam problemy z dostępem do repozytorium SVN przy użyciu TortoiseSVN 1.7.8.
Repozytorium SVN znajduje się w skrzynce CentOS 6.3 zopenssh 5.3p1:81.el6
i wydaje się działać poprawnie.
# svnadmin --version
# svnadmin, version 1.6.11 (r934486)
Za pomocą tego polecenia mogę uzyskać dostęp do repozytorium z innego pola CentOS:
svn list svn+ssh://[email protected]/var/svn/joetest
Ale kiedy próbuję przeglądać repozytorium za pomocą TortiseSVN ze stacji roboczej Win 7, nie mogę tego zrobić przy użyciu następującej ścieżki:
svn+ssh://[email protected]/var/svn/joetest
Otrzymuję następujący błąd z TortoiseSVN:
Nie można połączyć się z repozytorium w URL 'svn + ssh: //[email protected]/var/svn/joetest' Aby lepiej debugować problemy z połączeniem SSH, usuń opcję -q z 'ssh' w [ tunel]] pliku konfiguracyjnego Subversion. Połączenie sieciowe zostało nieoczekiwanie zamknięte
Jestem w stanie zalogować się przez SSH ze stacji roboczej za pomocą Putty.
Wyniki są takie same, jeśli próbuję uzyskać dostęp jako root.
Dałem prawo własności do repozytorium/var/svn/
doUSER:USER
i pobiegłchmod 2700 -R /var/svn/
.
Ponieważ mogę uzyskać dostęp do repozytorium przez ssh z innego systemu Linux, uprawnienia nie wydają się być problemem.
Kiedy oglądam plik dziennika za pomocątail -fn 2000 /var/log/secure
, Widzę, co następuje za każdym razem, gdy TortiseSVN prosi o hasło:
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
W rzeczywistości mogę się zalogować, ale sesja jest natychmiast zamykana.
Przykuło moją uwagę, że sesja jest otwierana dla USER przez roota(uid=0)
, co może być poprawne, ale wspomnę o tym na wypadek, gdyby miało to coś wspólnego z problemem.
Spojrzałem na modyfikacjęsvnserve.conf
, ale o ile wiem, nie jest używany podczas uzyskiwania dostępu do repozytorium przezsvn+ssh
, dla każdego logowania za pomocą tej metody tworzona jest prywatna instancja svnserve. Z podręcznika:
Jest jeszcze trzeci sposób na wywołanie svnserve i to w „trybie tunelowym” z opcją -t. Ten tryb zakłada, że program zdalnej obsługi, taki jak RSH lub SSH, pomyślnie uwierzytelnił użytkownika i teraz wywołuje prywatny proces svnserve jako ten użytkownik. Program svnserve zachowuje się normalnie (komunikuje się poprzez stdin i stdout) i zakłada, że ruch jest automatycznie przekierowywany przez jakiś tunel z powrotem do klienta. Gdy svnserve jest wywoływany przez agenta tunelu w ten sposób, upewnij się, że uwierzytelniony użytkownik ma pełny dostęp do odczytu i zapisu do plików bazy danych repozytorium. (Patrz Serwery i Uprawnienia: Słowo ostrzeżenia.) Jest to zasadniczo taki sam użytkownik, jak użytkownik lokalny uzyskujący dostęp do repozytorium za pomocą adresów URL file: ///.
Jedyne ustawienia inne niż domyślne wsshd_config
są:
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
jakieś pomysły?