svnadmin
(およびその他の必要なユーティリティ)がインストールされているFreeBSDマシンにSSHでアクセスできます。 svnはバージョン1.7.9(r1462340)です。 Tortoise SVN1.7.7を使用しているWindows7x64を使用しています。
サーバーとTortoiseSVNのセットアップを支援するために この公式ガイド に従いましたが、セットアップに問題があります。
秘密鍵と公開鍵のペアを生成し、サーバーの~/.ssh/authorized_keys
ファイルとPuTTY構成にそれぞれ追加しました。 PuTTYと秘密鍵を使用してリモートマシンに接続できます。
同じことを行うようにTortoiseSVNを構成しようとしましたが、次の場所に接続しています。
svn+ssh://myBSDusername@it2svn/somerepo
ここで、it2svn
はworkingPuTTY接続プロファイルの名前であり、somerepo
は私のリポジトリルート(~/svnroot/somerepo
)のリポジトリです。 。
発生する問題は、Tortoise SVNがキーのパスフレーズを要求し、何度正しく入力しても、パスワードダイアログが1〜2秒間閉じられることです。秒後、パスフレーズの入力を再度求められます。 それは間違っているとさえ言っていません、それは私にパスフレーズを何度も何度も求め続けます。
意図的に間違ったパスフレーズを入力すると、正しいパスフレーズを入力したときに1〜2秒の遅延が発生することなく、すぐにすぐにプロンプトが表示されます。私が意味不明になっているのに、ダイアログはまだそれが間違っているとは言いません。これは彼らの側のバグかもしれませんが、それでも私の正しいパスフレーズが受け入れられない理由を説明していません。
authorized_keys
ファイルの内容は次のとおりです(キーの実際の内容は削除されています)。
ssh-dss AAA....FuA== myBSDusername@ems
command="svnserve -t -r ~/svnroot --tunnel-user=svnAuthorDude",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss AAAA....IFuA== myBSDusername@ems
重要な注意:ガイドによると、私の「コマンド」行は次のようになります。
command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>",
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
no-pty ssh-rsa <PublicKey> <Comment>
ただし、ガイドと同じパラメータを使用してssh-keygen
を使用して生成したキーは、ssh-dss
ではなくssh-rsa
で始まります。そのため、ssh-rsa
は自分のファイルでdss
に置き換えられます。 (明らかに、キーはDSAであり、RSAキーではないため)。
PuttyGenを使用してキーペアを再生成し、(古いDSAキーに対して)RSA2キーペアにしました。また、パスフレーズで秘密鍵を保護することをスキップしました。これで、すべてが(魔法のように)機能します。どのような変更で実際に問題が修正されたかは正確にはわかりませんが、これが同様の問題を抱える将来の開発者に役立つことを願っています。
これが私のユーザーの~/.ssh/authorized_keys
の(関連する)内容です:
ssh-rsa AAAA...Wc= rsa-key-20130529
command="svnserve -t -r /user/rest/of/path/svnroot --tunnel-user=someuser",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...Wc= andrei
あなたが抱えていた問題は、キーペアでパスフレーズを使用し、ページェントを使用しないことでした。
TortoiseSVnがSSHトンネルに接続すると、plink(またはTortoisePLink)を使用して複数の個別のリクエストを行うようです。これが発生するたびにSSHキーが必要になるため、ロックを解除する必要があり、パスワード要求が発生します。
キーペアをパスワードで保護しない場合は、パスワードを要求する必要はありません。
TortoiseSVNを使用する前にキーをロードするようにページェントを構成すると、plinkは、代わりにページェントから、すでにロック解除されてキャッシュされているキーを取得します。このようにして、パスワードで保護されたキーを使用でき、パスワードを繰り返し入力する必要がありません。ただし、ページェントにキーを追加するときは、一度入力する必要があります。