web-dev-qa-db-ja.com

SSHパスフレーズはMacOS X SnowLeopardで覚えています

私はSnowLeopardで非常に奇妙な状況に直面しています。 RSAキーを介してのみ認証されたssh接続を受け入れるように構成されたLinuxサーバーがあります。パスワードなし。私のラップトップでは、ssh-keygenを使用してRSAキーを正しく展開し、その間にパスフレーズを追加しました。次に、Linuxサーバー.ssh/authorized_keysのid_rsa.pubを移動しました。

ここまでは順調ですね。今度は、SnowLeopardラップトップからLinuxマシンにログインしようとします。パスフレーズを要求するウィンドウポップアップが表示されます。ポップアップではなくシェルパスフレーズ要求を期待していたので、これは私を驚かせる最初のことです。このポップアップウィンドウの詳細によると、パスフレーズを要求するアプリケーションはsshです。また、無効になっている「キーチェーン内のフレーズを記憶する」オプションがあります。

パスワードを入力しました。ポップアップが消え、ターミナルがLinuxマシンに正しくログインします。ここで、ログアウトして再度sshを実行しようとすると、パスフレーズを要求せずにログインが実行されます。これは、notです。

私がチェックしたもの:

  • キーチェーンには何も保存されません。閲覧しても何も見つかりませんでした。
  • ターミナルを閉じたり終了したりして新しいターミナルを開いても、パスフレーズの入力を求められず、sshは問い合わせなしでログインします。
  • macOSXセッションからログアウトして再ログインすると、次の試行でパスフレーズが要求され、再度ポップアップダイアログが表示されます。その後、それはもう要求されていません。

パスフレーズはどこに保存されますか?正確には何が起こっているのでしょうか。また、sshを試行するたびにパスフレーズの要求を強制するにはどうすればよいですか。

8
Stefano Borini

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により、アンロードするだけでなく、無効としてマークして記憶します。

10
voretaq7