ssh-add は再起動後も持続しません。

ssh-add は再起動後も持続しません。

次のようにエージェントにSSHキーを追加しました。

$ ssh-add ~/.ssh/id_rsa_mac
Identity added: /Users/alex/.ssh/id_rsa_mac (/Users/alex/.ssh/id_rsa_mac)

再起動後、エージェントはこのキーを追加しなくなります。

$ ssh-add -l
The agent has no identities.

なぜこれが起こるのですか?

ベストアンサー1

エージェントにキーを追加するのは一時的です。エージェントの実行中にのみ持続します。シャットダウンまたはコンピュータを再起動すると、再追加す​​るまでそのエントリが失われます。ssh-agentマニュアルページから:

ssh-agentは、公開鍵認証(RSA、DSA、ECDSA)のために秘密鍵を保存するプログラムです。アイデアは、ssh-agentがXセッションまたはログインセッションの開始時に開始され、他のすべてのウィンドウまたはプログラムがssh-agentプログラムのクライアントとして起動されることです。環境変数を使用すると、ssh(1)を使用して他のシステムにログインしたときにプロキシを見つけて自動的に認証に使用できます。

エージェントには最初は秘密鍵はありません。キーを追加するにはssh-add(1)を使用してください。引数なしで実行されると、ssh-add(1)はファイルを追加します~/.ssh/id_rsa。 IDにパスワードがある場合、ssh-add(1)は端末(端末にパスワードがある場合)または小さなX11プログラム(X11で実行されている場合)からパスワードを要求します。どちらも該当しない場合、認証は失敗します。その後、ID をエージェントに送信します。複数の ID をエージェントに保存でき、エージェントはこれらの ID の 1 つを自動的に使用できます。現在エージェントが保持しているIDを表示します。~/.ssh/id_dsa~/.ssh/id_ecdsa~/.ssh/identityssh-add -l

macOS シエラレオン

macOS Sierra 10.12.2から起動、AppleはSSH設定用のUseKeychain設定オプションを追加しました。UseKeychain yesに加えてこれを行うことができます~/.ssh/config

Host *
  UseKeychain yes

OSXキーチェーン

私はOSXを使用していませんが、SuperUserで次のタイトルのQ&Aを見つけました。SSHキーでMac OS Xキーチェーンを使用するには?

私が知る限り、KeychainはMac OS X LeopardからSSHキーの保存をサポートしています。誰かがこの機能がどのように機能するかを説明できますか?

したがって、次のコマンドを使用してSSHキーをキーチェーンにインポートできます。

$ ssh-add -K [path/to/private SSH key]

その後、起動するたびにキーを保持する必要があります。

Macを再起動するたびに、キーチェーン内のすべてのSSHキーが自動的にロードされます。 Keychain Accessアプリケーションと次のコマンドラインでキーを表示できます。

  ssh-add -l

源泉:スーパーユーザー - SSHキーでMac OS Xキーチェーンを使用する方法は?

セラの上?

以降のバージョンのMacOSでは、-Kまたはスイッチを使用しようとする-Aとこのメッセージが表示されることがあります。たとえば、

 $ ssh-add -K
WARNING: The -K and -A flags are deprecated and have been replaced
         by the --apple-use-keychain and --apple-load-keychain
         flags, respectively.  To suppress this warning, set the
         environment variable APPLE_SSH_ADD_BEHAVIOR as described in
         the ssh-add(1) manual page.

したがって、警告メッセージで提供されている指示を代わりに使用してください。

$ ssh-add --apple-load-keychain --apple-load-keychain
Identity added: /Users/slm/.ssh/somekey1_id_rsa (/Users/slm/.ssh/somekey1_id_rsa)
Identity added: /Users/slm/.ssh/somekey2_id_rsa (/Users/slm/.ssh/somekey2_id_rsa)

また、この環境変数とそのAPPLE_SSH_ADD_BEHAVIOR値を使用して警告を表示しないこともありますmacosssh-addマニュアルページから:

$ man ssh-add
...
APPLE_SSH_ADD_BEHAVIOR
        Enables or disables the older processing of the -A and -K 
        options used in earlier macOS releases.  These options have 
        been renamed --apple-load-keychain and --apple-use-keychain
        respectively. However, -A and -K still behave as in earlier 
        releases except in the following circumstances.  If a 
        security provider was specified with -S or SSH_SK_PROVIDER, 
        or if APPLE_SSH_ADD_BEHAVIOR is set to the value “openssh”, 
        then ssh-add uses standard OpenSSH behavior: the -A flag is 
        not recognized and the -K flag behaves as documented in the 
        DESCRIPTION section above.

        Otherwise, ssh-add -A and -K will behave as in earlier macOS 
        releases. A warning will be output to standard error unless
        APPLE_SSH_ADD_BEHAVIOR is set to the value “macos”.  Note: 
        Future releases of macOS will not support neither -A nor -K
        without setting this environment variable.

おすすめ記事