1

これが私の状況です。

Cruise Control を Windows サービスとして実行していて、SSH 経由で BitBucket の Mercurial リポジトリに接続しようとしています。

すべてが正常に構成されていると確信しています (PuttyGen、Pagaent など)。サービスの実行に使用しているのと同じアカウントを使用してサーバーにリモート接続しています。コマンド ラインから hg pull -b ssh://@bitbucket.org// を発行すると、すべてが機能します。-v を mercurial.ini の ssh 構成に追加したところ、実行されたすべての手順を確認できます。

コマンド プロンプトから CC.NET を実行すると、正常にビルドされます。コンソール ウィンドウで、SSH 操作からの同じログを確認できます。

ただし、CC.NET をサービスとして (ログインしているのと同じユーザー アカウントを使用して) 実行すると、BitBucket への呼び出しがタイムアウトします。理由を突き止める方法も見つかりません。ビルド ログは役に立たず、一時ディレクトリの ccnet.log または ccnet.trace も役に立ちません。それらの 1 つに SSH 操作からのログが含まれていることを期待していましたが、そうではありません。

誰でも助けることができますか?サービスとして実行すると、Pagaent に接続できなくなるということですか (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run に追加して Pagaent を開始しました)。コマンド ラインからプルを実行したとき、ダイアログを OK にする必要がありましたが、1 回だけでした。サービスとして実行されているため、同じダイアログで待機していますか?

私の知恵に近づくことはここで終わりです。

ありがとう

4

1 に答える 1

3

私は最終的にそれを機能させました。秘訣は、パスフレーズなしで公開鍵を作成することでした。サービスとして実行する場合、ソリューションは完全に非インタラクティブである必要があり、pagaent.exe のパスフレーズ オプションはそうではありません。

手順は次のとおりです。

  • PutTTygen を使用して、パスフレーズなしでセキュア キーを生成します。本当に必要な場合は、それを mercurial.ini ファイルに追加できますが、とにかく目立たないので、私にとってはポイントがありません。

  • mercurial.ini を C:\Windows\System32\config\systemprofile と C:\Windows\SysWOW64\config\systemprofile の 2 つの場所にコピーします。おそらくこれらのうちの 1 つだけが本当に必要だったのでしょうが、実験する時間がありませんでした。1 つ目は、64 ビット アプリを実行している場合のシステム ユーザーのホーム ディレクトリで、32 ビットの場合は SysWOW64 の場所です。私と同じことをする場合は、両方のファイルを同期させてください。または、さらに進んで、どちらが正しい場所かを調べてください。

  • 両方のファイルの [ui] キーの下に次のような行を追加します: ssh = "D:\Program Files\TortoiseHg\TortoisePlink.exe" -ssh -2 -C -batch -v -i "[ppk ファイルへのパス] " ステップ 1 でパスフレーズを作成した場合は、コマンドの末尾にパスフレーズを追加します。Plink.exe ではなく、TortoisePlink.exe が指定されていることを確認してください。両方とも同じディレクトリにある必要があります。

  • http://technet.microsoft.com/en-gb/sysinternals/bb842062.aspxから psexec をダウンロードします。

  • d:\PSTools\PsExec.exe -s -i cmd.exe を実行します。これにより、対話モードでシステム アカウントとしてコマンド ラインが開きます。

  • 次に、hg プル、または hg クローンなどを実行します。

  • ダイアログに確認メッセージが表示されます。これは 1 回限りのことであり、PsExec ステップを実行する必要がある理由です。ダイアログをOKします。

これで、SSH を使用してローカル システム アカウントで cc.net をサービスとして実行できるようになりました。

于 2013-10-02T10:06:28.503 に答える