私は 2 台のマシン (M1 と M2) を持っており、どちらも OS X を実行しています。また、3 台目のマシン (L) は Linux を実行しています。M1 と M2 にはキーチェーンでロック解除された RSA キーがあるため、次の操作を実行できます。
- パスワードやキーのパスフレーズを尋ねられることなく、M1 から M2 に ssh する
- パスワードやキーのパスフレーズを尋ねられることなく、M2 から L に ssh する
しかし、M1 から M2 に ssh し、次に L に ssh すると (物理的にはまだ M1 上にいる間)、キーのパスフレーズの入力を求められます。コマンドlogin.keychain
を使用して手動でロック解除を試みましたsecurity
が、効果がないようです。
何が間違っているのでしょうか? パスフレーズを入力せずに SSH を二重に行うにはどうすればよいですか?
答え1
キーチェーンは期待通りに動作しています。-A は、ロードされたキーを M1 から M2 を経由して L に転送します。M2 にログインすると、グラフィカル ログイン プロセスとその副作用がすべて発生しなかったため、キーが初期化されず、完全なセッションが開始されないのではないかと思います。
エージェントを ssh する場所に転送したい場合は、ファイル ~/.ssh/config を作成し、ForwardAgent を yes に設定して * ホストのエントリを追加する必要があります。
Host *
ForwardAgent yes
さらに、* をホスト名に置き換えることで、エージェントを転送するホストをより具体的に指定できます。
答え2
M2 から L にログインしようとしています。つまり、M2 に資格情報 (キーとパスフレーズ) が必要です。しかし、資格情報は実際には M1 にあります。
資格情報を M2 にコピーすることはできますが、その場合、M2 のキーチェーンを操作する必要があります。あるいは、M2 のキーチェーンではなく、M1 のキーチェーンに接続するように M2 に指示することもできます。これは実際には通常の方法であり、一部のインストールではすぐに使用できますが、どうやらあなたの環境ではそうではないようです。
有効にするエージェント転送M1 から M2 へ。OpenSSH のコマンド ラインで、オプション (つまり、 M1 で-A
実行) を渡します。ディレクティブを に入れることもできます。OSX では、これを行う GUI の方法もあるかもしれません。ssh -A M2
ForwardAgent
~/.ssh/config