VM 内の Openssh はホスト上の Pageant を使用して認証します

VM 内の Openssh はホスト上の Pageant を使用して認証します

アップデート: ネットワーク設計が完全に間違っていたようで、認証フローは逆の順序になるはずです。したがって、この質問はもはや意味がありません。


現在のセットアップ: Virtualbox を使用した、Windows 7 ホスト上の Linux VM (CentOS 7.1 や Ubuntu 15.04 などの一般的な最新のものを想定)。

TL;DRの質問: VM内でopensshを実行してないキー認証にはローカルの ssh-agent を使用しますが、代わりに Windows ホストでは Peagent を使用しますか? より複雑な設定も許容されます。

長い質問: もともと、ホストと VM には複数のキーのコピーがあります。ホストには Putty 形式のキー、共有フォルダー経由の VM には openssh キー形式があり、利便性のためにその多くはパスワードで保護されていません。しかし、最近、それらを統合してさらに保護を追加する必要性を感じています。キーは、リモート管理と、主に Git などのバージョン管理システムを介したソースコードのチェックアウトに使用されます。要件は次のとおりです。

  1. Windows ホストはリモート サーバーに ssh でき、ssh 経由で git を使用できます。
  2. Linux VM はリモート サーバーに ssh でき、ssh 経由で git を使用できます。
  3. キーはホストにのみ保存され、VM には保存されません。(つまり、これは SSH エージェント転送設定ではありません)

ポイント1(Windowsホストが認証にPageantを使用できるようにする)は比較的簡単です。gitのセットアップは基本的に正しい$GIT_SSH環境変数を設定するだけです。Puttyだけでなく、MinGWのopensshでも、パスワードマネージャー(KeePass 2.xを使用)内にすべてのキーを保存し、使用に適したソケットをエクスポートすることで、Pageantに接続できます$SSH_AUTH_SOCKKeeAgent プラグイン。 見るこの ServerFault の投稿別のアプローチについては。

しかし、これまでのところ、Linux VM経由でページェントにアクセスすることはできませんでした。私は次のアプローチを試しましたしかし失敗した:

  • SSHサーバーは中間ホップとしてWindowsホストにインストールされています(私はモバッシュしかし、選択は重要ではありません。読み進めてください。
  • 次に、VM 内からリモート実行を試みます。これは、私の目的には十分であるplink.exe単純なアプローチに似ています。ssh host1 ssh host2
  • しかしplink.exe は Windows SSH サーバー内で実行されたときにキーにアクセスできませんでした。plink.exe を直接実行しても動作しますcmd。Windows で実行されている利用可能な SSH サーバーのほとんどは Cygwin に基づいています。これによく似ています。putty/cygwin の組み合わせのバグレポート

注記:おそらく同様の質問がここにありますただし、Vagrant は使用していません。

答え1

元の設計は完全に間違っていたようです。各仮想マシンでsshdサーバーをオンにすると、よりクリーンになります。

AllowAgentForwarding yes

次に、各 VM に ssh します。この方法では、すべての VM が、ssh キーをインストールする必要なく、ホストから認証エージェントを自動的に使用します。

関連情報