[02:48] [root @ server:〜] ps ax | grep svn 23986? Ss 0:00/usr/bin/svnserve -d -r/srv/svn引数からわかるように、私のsvnルートディレクトリは/ srv/svnです。
さて、リモートマシンの魔法...
これは機能します:
> svn co svn://[email protected]/test-repo
しかし、これはそうではありません:
> svn co svn+ssh://svn-user@<PuTTY-session-name>/test-repo
'No repository found in 'svn+ssh://svn-user@<PuTTY-session-name>/test-repo'
数時間遊んでみたところ、一見であることがわかりました。sshトンネルを使用すると、次のようにしてリポジトリを取得できます。
> svn co svn+ssh://svn-user@<PuTTY-session-name>/srv/svn/test-repo
...つまり、リポジトリへの完全な物理パスを指定する必要があります。えっ?
ウォンブルが言ったように、確かにこれはsshに対するsvnの「機能」です。
Svnサーバーには元のsvnserveバイナリの代わりにsvnserveラッパースクリプトがあったため、リポジトリへのフルパスを指定せずにsvn + sshを機能させました。その後、Subversionの更新中に、このスクリプトは元のバイナリによって上書きされました。
ソリューション:
Svnserveの名前をbinに変更します
mv /usr/bin/svnserve /usr/bin/svnserve.bin
このスクリプトを/ usr/bin/svnserveとして保存します。
#!/bin/sh
exec /usr/bin/svnserve.bin -r /srv/svn "$@"
権限を更新する
chmod 755 /usr/bin/svnserve
SSH経由のsvn(svn+ssh://
)は、SSHをトランスポートとして使用して「ローカル」にSubversionリポジトリにアクセスしているだけなので、ファイルシステム全体にアクセスできます。対照的に、Svnserveは、「パスを/srv/svn
なので、手動で指定する必要はありません。
Subversionユーザーの〜/ .ssh/authorized_keysを編集することにより、svn + sshを使用するユーザーのsshログインコマンドを編集できます。ユーザーの行は次のようになります。
command="/usr/bin/svnserve -r /srv/svn [other svnserve options]" <key type> <user key> <key comment>
svn book にはもっとsvn + sshのトリックがあります
これはそれ自体が質問のようですが、これは本当にこれに関連しています。
秘密/公開鍵でsvn + sshを設定すると、相対パスを使用してこの方法でリポジトリにアクセスできません。
svn co svn+ssh://svn@SERVERIP/simple-webapp-svn simple-webapp-svn
私はこのエラーを受け取っているので:
svn: URL 'svn+ssh://svn@SERVERIP/simple-webapp-svn' doesn't exist
しかしそれだけです:
svn co svn+ssh://svn@SERVERIP/home/svn/projects/simple-webapp-svn simple-webapp-svn
これは/home/svn/.sshディレクトリ内にあるauthorized_keys2ファイルです
$ Sudo cat /home/svn/.ssh/authorized_keys2
command="/usr/bin/svnserve.bin -t --tunnel-user=USERNAME",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa [rsa-key] [user-note]
そしてAndrejsによって提案されたsvnserve.binファイル 前の回答
$ cat /usr/bin/svnserve.bin
#!/bin/sh
exec /usr/bin/svnserve -r /home/svn/projects "$@"
ここにリストされている許可の問題についても考えました:
-rwxr-xr-x 1 root root 63684 2009-12-12 06:45 /usr/bin/svnserve
-rwxr-xr-x 1 root root 61 2010-08-25 17:19 /usr/bin/svnserve.bin
私は本当に解決策を思い付くことはできません...