svnserve
から実行するようにinetd
を構成し、認証にsaslを使用するようにsvnserve.conf
を設定しました。これは、svn://
を使用して、システム全体のアカウントを持たないユーザーが一部のリポジトリにアクセスできるようにするためです。
ただし、システムアカウントを持っているユーザー(私など)の場合は、公開鍵認証にsvn+ssh://
を使用することをお勧めします。 svnserve -t
として実行すると、svnserveは認証を要求せず、SSH認証された現在のユーザーを使用することを理解していました。私はこれが以前はうまくいったように感じます。今日、私がsvn+ssh://
リポジトリパスを使用していた作業コピーを更新しようとすると、パスワードの入力を求められ始めました。
SSHがパスワードを要求していないこと、公開鍵認証が成功していること、svnserve/saslがパスワードを要求していることを確認できました。 saslをオフにすると、期待どおりに機能するように見えますが、プレーンテキストのパスワードファイルよりもsaslの方が好きです。これが機能しなかったのか、最近のアップグレードで気づかなかったために壊れたのかはわかりません。これは、DebianストレッチのSubversion1.9.4で使用されます。
svnserve
ソースを読んだ後、私は答えを見つけました。 -t
を使用しても、認証のためにsaslに委任します。これは、SSHユーザーを介した外部認証がオプションになったことだけです。しかし、それを機能させるには、許可されたメカニズムとしてEXTERNAL
をmech_list
ファイルの/usr/lib/sasl2/svn.conf
に追加する必要がありました。