私はSnowLeopardで非常に奇妙な状況に直面しています。 RSAキーを介してのみ認証されたssh接続を受け入れるように構成されたLinuxサーバーがあります。パスワードなし。私のラップトップでは、ssh-keygenを使用してRSAキーを正しく展開し、その間にパスフレーズを追加しました。次に、Linuxサーバー.ssh/authorized_keysのid_rsa.pubを移動しました。
ここまでは順調ですね。今度は、SnowLeopardラップトップからLinuxマシンにログインしようとします。パスフレーズを要求するウィンドウポップアップが表示されます。ポップアップではなくシェルパスフレーズ要求を期待していたので、これは私を驚かせる最初のことです。このポップアップウィンドウの詳細によると、パスフレーズを要求するアプリケーションはsshです。また、無効になっている「キーチェーン内のフレーズを記憶する」オプションがあります。
パスワードを入力しました。ポップアップが消え、ターミナルがLinuxマシンに正しくログインします。ここで、ログアウトして再度sshを実行しようとすると、パスフレーズを要求せずにログインが実行されます。これは、notです。
私がチェックしたもの:
パスフレーズはどこに保存されますか?正確には何が起こっているのでしょうか。また、sshを試行するたびにパスフレーズの要求を強制するにはどうすればよいですか。
OS Xは、秘密鍵が必要になると、自動的にssh-agentを起動します。 OS Xのからログアウトするか、キーを削除するまで(ssh-add -d
またはssh-add -D
を使用してすべてのキーを削除するまで)、キーはssh-agentを介して(パスフレーズを再度入力せずに)使用できます。
これは、ssh-agentを使用した標準の* NIXシステムの動作に似ており、エージェント認証転送(ssh -A
)などの便利な機能を使用できるため、ネットワーク全体に秘密鍵を配置する必要がありません。
(Macのすべてのユーザーに対して)ssh-agentを無効にする場合は、ファイル/System/Library/LaunchAgents/org.openbsd.ssh-agent.plist
を削除できます。
もう1つの方法は、LaunchAgentをアンロードして無効にすることです。
Sudo launchctl -w /System/Library/LaunchAgents/org.openbsd.ssh-agent.plist
-w
により、アンロードするだけでなく、無効としてマークして記憶します。