少し前に、ssh-agentに削除できないキーが3つあることに気付きました。 ssh-add -l
は3つのキーを示しました。私はssh-add -D
を実行し、「すべてのIDが削除されました」と通知されました。しかしすぐにssh-add -l
は同じ3つのキーを示しました。
ログアウトしてから再度ログインしても、キーはまだ残っています。マシンを再起動しても、キーは残っています。 /tmp
のキーリングディレクトリを削除すると、ssh-agent
に接続できなくなりますが、ログアウトして再度ログインすると、キーが元に戻ります。彼らは不死身です。
私の知る限り、鍵は私のものであり、他人のものではありません。いつものローカルサービスにアクセスできます。しかし、ssh-add
を使用してキーの1つを再度追加し、秘密キーファイルへのパスを指定すると、ssh-add -l
の出力では、新しいキーの外観が異なります。
2048 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f /home/jruser/.ssh/jruser-keyname-20110418 (RSA)
対オリジナル:
2048 00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f jruser 04/18/2011 keyname (RSA)
この振る舞いを賢明に説明する方法はありますか?私は本当に2つの質問があると思います:
リブート後もキーはどのように保持されますか? ssh
に関する私の基本的な知識は、キーは常に手動で追加する必要があることを示唆しています。
IDの削除についてssh-agent -D
が嘘をつくのはなぜですか?
バグのようです。私はUbuntu 10.10でも同様の振る舞いをしています。グーグル検索でDebianのバグレポートが見つかりました: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=472477
表示していた余分なキーを削除するために、〜/ .sshディレクトリから移動しました。
キーは隠しディレクトリ/home/jruser/.ssh/にファイルとして保存されます。これにより、再起動後もキーが保持されます。私の推測では、ssh-add -Dはそれらをメモリから削除しているのですが、再起動すると.sshディレクトリから読み取られるため、それらは再び存在します。