web-dev-qa-db-ja.com

saslが使用されているのに、svnserveがsvn + sshを介してパスワードを要求するのはなぜですか?

svnserveから実行するようにinetdを構成し、認証にsaslを使用するようにsvnserve.confを設定しました。これは、svn://を使用して、システム全体のアカウントを持たないユーザーが一部のリポジトリにアクセスできるようにするためです。

ただし、システムアカウントを持っているユーザー(私など)の場合は、公開鍵認証にsvn+ssh://を使用することをお勧めします。 svnserve -tとして実行すると、svnserveは認証を要求せず、SSH認証された現在のユーザーを使用することを理解していました。私はこれが以前はうまくいったように感じます。今日、私がsvn+ssh://リポジトリパスを使用していた作業コピーを更新しようとすると、パスワードの入力を求められ始めました。

SSHがパスワードを要求していないこと、公開鍵認証が成功していること、svnserve/saslがパスワードを要求していることを確認できました。 saslをオフにすると、期待どおりに機能するように見えますが、プレーンテキストのパスワードファイルよりもsaslの方が好きです。これが機能しなかったのか、最近のアップグレードで気づかなかったために壊れたのかはわかりません。これは、DebianストレッチのSubversion1.9.4で使用されます。

1
sparkyb

svnserveソースを読んだ後、私は答えを見つけました。 -tを使用しても、認証のためにsaslに委任します。これは、SSHユーザーを介した外部認証がオプションになったことだけです。しかし、それを機能させるには、許可されたメカニズムとしてEXTERNALmech_listファイルの/usr/lib/sasl2/svn.confに追加する必要がありました。

1
sparkyb