アップデート: ネットワーク設計が完全に間違っていたようで、認証フローは逆の順序になるはずです。したがって、この質問はもはや意味がありません。
現在のセットアップ: Virtualbox を使用した、Windows 7 ホスト上の Linux VM (CentOS 7.1 や Ubuntu 15.04 などの一般的な最新のものを想定)。
TL;DRの質問: VM内でopensshを実行してないキー認証にはローカルの ssh-agent を使用しますが、代わりに Windows ホストでは Peagent を使用しますか? より複雑な設定も許容されます。
長い質問: もともと、ホストと VM には複数のキーのコピーがあります。ホストには Putty 形式のキー、共有フォルダー経由の VM には openssh キー形式があり、利便性のためにその多くはパスワードで保護されていません。しかし、最近、それらを統合してさらに保護を追加する必要性を感じています。キーは、リモート管理と、主に Git などのバージョン管理システムを介したソースコードのチェックアウトに使用されます。要件は次のとおりです。
- Windows ホストはリモート サーバーに ssh でき、ssh 経由で git を使用できます。
- Linux VM はリモート サーバーに ssh でき、ssh 経由で git を使用できます。
- キーはホストにのみ保存され、VM には保存されません。(つまり、これは SSH エージェント転送設定ではありません)
ポイント1(Windowsホストが認証にPageantを使用できるようにする)は比較的簡単です。gitのセットアップは基本的に正しい$GIT_SSH
環境変数を設定するだけです。Puttyだけでなく、MinGWのopensshでも、パスワードマネージャー(KeePass 2.xを使用)内にすべてのキーを保存し、使用に適したソケットをエクスポートすることで、Pageantに接続できます$SSH_AUTH_SOCK
。KeeAgent プラグイン。 見るこの 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 キーをインストールする必要なく、ホストから認証エージェントを自動的に使用します。