SSH エージェントはマシンの再起動中に ID を失います

SSH エージェントはマシンの再起動中に ID を失います

デフォルトの場所に名前付きのキーを作成した後id_rsa、コマンドを使用して SSH エージェントに ID を追加しています。ssh-add ~/.ssh/id_rsa正常に追加されています。

SSH エージェントがすでにインストールされているため、キーのパスフレーズを入力しなくても SSH できます。

しかしマシンまたはサーバーを再起動し、コマンドで ID を確認すると、ssh-add -L次のようなメッセージが表示されますThe agent has no identities

つまり、マシンを再起動すると、エージェントの ID が失われるということですか? これは正常な動作ですか、それとも私が見逃している何かですか?

SSH についてはあまり詳しくないので、教えてください。

答え1

それは正常です。キーエージェントの目的は、復号化されたキーを保持することです記憶にただし、ディスクに書き込むことはありません。(これでは目的が達成されません。代わりにメイン キーの保護を解除しないのはなぜでしょうか?)

そのため、ログインのたびにキーのロックを解除する必要があり、これを自動化する必要があります。Linuxでは、を使用するのがpam_ssh1つのオプションです。自動的にOSのパスワードを使用しますエージェントのロックを解除します。 同様のモジュールとしてはpam_envoy、私の知る限りではやや信頼性が高い があります (ただし、systemd が必要です)。

どちらのモジュールもエージェント自体を起動し、キーを自動的にロードします。

答え2

OS X では、秘密鍵をキーチェーンに保存することにした場合、ssh-add にはキーチェーンに接続するための特別なフラグがあります。

ただ走れssh-add -K ~/.ssh/id_rsa

これであなたの質問にもっと完全に答えられたと思います。この OS X 固有のフラグについてはドキュメントを見つけるのが難しいですが、少なくとも OS X Leopard 以降では機能しています。

答え3

これを試してみてください~/.bashrc:

if [ ! -S ~/.ssh/id_rsa ]; then
  eval `ssh-agent`
  ln -sf "$SSH_AUTH_SOCK" ~/.ssh/id_rsa
  ssh-add
fi
export SSH_AUTH_SOCK=~/.ssh/id_rsa

ログインするとパスワードの入力が求められるようになります。

答え4

メモリにロードするには、再起動のたびにロックを解除する必要があります。これを行うには、次の行を に追加します~/.bashrc

eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa

キー ペアid_rsaを作成するときに名前を付けないでください。アクセスしようとしているリソースに関連する意味のある名前をキーに付けます。任意の名前にすることができ、デフォルト名に特別なものはありませんid_rsa

関連情報