6

TortoiseSVN 1.7.8 を使用して SVN リポジトリにアクセスできません。

SVN リポジトリは CentOS 6.3 ボックスにopenssh 5.3p1:81.el6あり、正しく機能しているようです。

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

次のコマンドを使用して、別の CentOS ボックスからリポジトリにアクセスできます。

svn list svn+ssh://USER@xxx.xx.xx.xxx/var/svn/joetest

しかし、Win 7 ワークステーションから TortiseSVN を使用してリポジトリを参照しようとすると、次のパスを使用して参照できません。

svn+ssh://USER@xxx.xx.xx.xxx/var/svn/joetest

TortoiseSVN から次のエラーが表示されます。

Unable to connect to a repository at URL 'svn+ssh://USER@xxx.xx.xx.xxx/var/svn/joetest' Subversion 設定ファイルの tunnels] セクション。ネットワーク接続が予期せず閉じられました

Putty を使用して、ワークステーションから SSH 経由でログインできます。

root としてアクセスしようとしても、結果は同じです。

リポジトリの所有権を に与え/var/svn/USER:USER実行しまし
chmod 2700 -R /var/svn/た。

別の Linux ボックスから ssh 経由でリポジトリにアクセスできるため、アクセス許可が問題になることはないようです。

を使用してログ ファイルを監視するとtail -fn 2000 /var/log/secure、TortiseSVN がパスワードを要求するたびに次のように表示されます。

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

実際にはログインできますが、セッションはすぐに閉じられます。

root によって USER に対してセッションが開かれていることに気付きました(uid=0)。これは正しいかもしれませんが、問題に関係がある場合に備えて言及します。

の変更を検討しましたsvnserve.confが、私が知る限り、を介してリポジトリにアクセスする場合は使用されず、svn+sshこのメソッドを介してログインするたびにプライベート svnserve インスタンスが作成されます。マニュアルから:

svnserve を呼び出す 3 番目の方法はまだあります。それは、-t オプションを使用した「トンネル モード」です。このモードは、RSH や SSH などのリモート サービス プログラムがユーザーの認証に成功し、そのユーザーとしてプライベート svnserve プロセスを呼び出していることを前提としています。svnserve プログラムは正常に動作し (stdin と stdout を介して通信します)、トラフィックがある種のトンネルを介してクライアントに自動的にリダイレクトされていると想定します。このようなトンネル エージェントによって svnserve が呼び出される場合は、認証されたユーザーがリポジトリ データベース ファイルへの完全な読み取りおよび書き込みアクセス権を持っていることを確認してください。(「サーバーとパーミッション: 警告」を参照してください。) これは、ローカル ユーザーが file:/// URL 経由でリポジトリにアクセスするのと本質的に同じです。

のデフォルト以外の設定は次のsshd_configとおりです。

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

何かご意見は?

4

7 に答える 7

4

私はついにこれに対する解決策に出くわしました。すべての場所の TortoiseSVN FAQ:
TortoiseSVN よくある質問

FAQ から:
SVN+SSH: 接続が予期せず閉じられました

以前は動作していた svn+ssh://username@server.com 形式の svn+ssh 接続が、TortoiseSVN 1.5 では動作しなくなることが報告されています。これは plink に関連しているようで、PuTTY でデフォルトのホスト名が設定されている場合に発生します。

この場合、regedit または regedt32 を使用して HKEY_CURRENT_USER/Software/SimonTatham/Putty/Sessions/Default%20Settings/HostName をクリアすることで修正できます。


別のユーザーから、次のサーバー側の修正が報告されました。

  • アカウントにsshします
  • CD〜
  • cp /etc/bashrc .bashrc
  • nano.bashrc
  • 「mesg y」の行の前に # を付けます (コメント化されます)。
  • Ctrl+X で終了し、保存を求められたら Y を押します。

レジストリを編集する最初のアプローチは試しませんでした。

bash 構成を編集する 2 番目のアプローチは、私にとってはうまくいきました。

bash の設定方法に関する注意:

共有ホスティングを使用している場合、ユーザーの .bashrc ファイルはグローバルな /etc/bashrc ファイルをロードしている可能性があります。グローバル ファイルを編集することはできないため、これを回避する必要があります。

いくつかの可能なアプローチ:

  • mesg nユーザーの .bashrc ファイルに追加してみてください。これが機能するかどうか、またはグローバル ファイルがロードされる前または後に配置する必要があるかどうかはわかりません。

  • グローバル ファイルを含めず、すべての設定をユーザー.bashrcファイルにハード コードします。

  • mesg y読み込み中にグローバル /etc/bashrc ファイルから設定を削除します。この質問では、その方法について説明します: bash に含まれるソースとして grep ファイルを使用する

于 2013-01-31T05:37:38.317 に答える
2

古い質問ですが、Google ではまだ一番上にあるので、解決策を共有したいと思いました。

簡単に言えば、サーバー上にユーザーの「ホーム」ディレクトリがなかったためです。SSH クライアントを Putty に付属の plink.exe に変更すると (フォルダーを右クリック | TortoiseSVN | 設定 | ネットワーク)、ウィンドウが画面に表示されたときにエラーが表示されました。

于 2015-03-12T11:34:14.050 に答える
1

私の場合、原因は svnuser にシェルがないことでした (/bin/false でした)。
これは、debug ssh -vvv を使用しても ssh ログには表示されません。

このタイプの問題がある場合、デバッグ出力は次のようになります

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 eow@openssh.com reply 0
debug1: channel 0: free: client-session, nchannels 1

シェルが /bin/bash に設定されている場合、ログは次のように変更されます

debug1: Sending env LANG = en_GB.UTF-8
debug1: Sending command: svnserve -t
Path: MyRepo
URL: svn+ssh://svnuser@myServer.com/MyRepo
于 2016-11-30T11:07:08.260 に答える