web-dev-qa-db-ja.com

tortoisehgを使用してWindowsでsshプロキシを介してリモートMercurialリポジトリにアクセスする

サーバー上にリモートMercurialリポジトリ(hg-gatewayによって管理)があります。そのサーバーへのアクセスは一般に公開されていません。ただし、ファイアウォールはsshプロキシを許可します。

TortoisehgでそのリポジトリにアクセスするようにWindowsクライアントを構成するにはどうすればよいですか?

this とは異なることに注意してください。その質問では、プロキシは含まれていません。私は同等のウィンドウを探しています

Host remote-dev
    user mercurialuser
    ProxyCommand ssh -q firewalluser@firewall

次のようなMercurialリポジトリにアクセスするため

hg clone ssh://remote-dev/repo

私は実用的な解決策を見つけました。コミュニティの利益のために、以下の回答に投稿します。

2
lorenzog

システム管理の前提条件は、この投稿の最後にあります。

  1. puTTY、plink、pageant、puttygenを ここ からダウンロードしてインストールします
  2. sshキーがない場合は、puttygenを起動して:
    1. linuxで生成されたキーがすでにある場合:
      1. 「既存の秘密鍵ファイルをロードする」を選択します
      2. 適切なファイルを選択します(ファイル拡張子フィルターを変更する必要があります)
      3. パスフレーズを挿入
      4. 「秘密鍵を保存」を選択します
    2. そうしないと、
      1. 「キーの生成」を選択します
      2. マウスをランダムに動かす
      3. 「秘密鍵を保存」を選択します
      4. 「公開鍵を保存」を選択します
  3. sysadminに秘密鍵ではなく公開鍵を送信してください! (システム管理者:以下をお読みください)
  4. windowsコマンドプロンプトを実行し(開始>実行して「cmd」と入力)、「pageant.exe」を起動します
  5. アイコンバーのアイコンを右クリックし、「キーを追加」
  6. 以前に保存した秘密鍵を選択し、パスフレーズを挿入します
  7. puTTYを起動します

    1. ホスト名に入力:リポジトリサーバーのIPアドレス
    2. セッションを「remote-dev」として保存(任意の名前で構いません)
    3. 接続>プロキシに移動します
    4. プロキシタイプとして「ローカル」を選択します
    5. プロキシホスト名:ファイアウォールのDNSエントリまたはIPアドレス
    6. ポート:22(またはファイアウォールにSSH接続するのに適切なもの)
    7. ユーザー名:hg(またはファイアウォール上のすべてのユーザーが.ssh/authorized_filesにパブリックsshキーを持っている)
    8. 'telnetコマンドまたはローカルプロキシ'でコンテンツを 'FULLPATH\plink.exe -v -nc %Host:%port %user@%proxyhost'に置き換えます(c:\ plink.exeのような実行可能plink.exeのフルパスを使用することに注意してください)
    9. 接続>データに移動します
    10. 自動ログインユーザー名:hg(またはリポジトリサーバー上の任意のユーザーがhg-gatewayを実行している)
    11. 「セッション」に戻る
    12. 「保存」をクリックしてセッションを保存します
    13. 「開く」をクリックします
    14. あなたは次のようなものを見るはずです

      Using username "hg".
      Authenticating with public key "imported-openssh-key" from agent
      Welcome to XXX code repository server!
      Your SSH access is restricted by hg-gateway.
      Summary of repos you have access to:
      
  8. 今すぐダウンロードしてインストール tortoisehg

  9. tortoisehgワークベンチを起動する
  10. ファイル>クローンリポジトリ
  11. ソース:ssh:// remote-dev/repo-name(remote-devは、PuTTYでセッションと呼んだものと一致する必要があります!)
  12. 目的地:地元の目的地を選ぶ
  13. 「クローン」をクリックします
  14. それでおしまい。

ユーザーがリモートリポジトリにアクセスできるようにするには:

  1. ファイアウォールのユーザーhg.ssh/authorized_keysに公開sshキーを追加します
  2. hg-gatewayを使用して、そのユーザーのキーをサーバー上のhgユーザーに追加します

注:PuTTYは.ppk形式でキーを生成する傾向があります。それらはワンライナーのsshキーに変換する必要があります。 Googleはここであなたの友達です。

仮定:

  1. ファイアウォールには、「hg」という名前のユーザーがいます。その.ssh/autorhized_keysファイルには、リポジトリにアクセスする必要があるすべてのユーザーの公開鍵が含まれています。
  2. ファイアウォールのファイル/ etc/ssh/sshd_configには、次のような行が含まれています。

    Match Group dev
        ForceCommand nc -q0 reposerver_ip 22
    

    そのため、ユーザーは接続するホストを指定できません。ユーザー 'hg'は明らかにunixグループ 'dev'に属しています。

4
lorenzog