2009-12-28 12:08:48 +0000 2009-12-28 12:08:48 +0000
143
143
Advertisement

Mac OS X KeychainをSSHキーで使うには?

Advertisement

Mac OS X Leopard以降、KeychainはSSH鍵の保存をサポートしていると理解しています。この機能がどのように動作するのか、誰か説明してもらえませんか?

私の ~/.ssh ディレクトリには、様々なサーバにアクセスするために生成した RSA 鍵がいくつか保存されています。これらの鍵にはパスフレーズが設定されていません。現在、これらのサーバにログインするために、ターミナルで以下のコマンドを使用しています。

eval `ssh-agent` ssh-add ~/.ssh/some\_key\_rsa ssh user@server

(これを簡単にするためにBash関数をいくつか書きました)

Keychainを使ってこれを行う良い方法はありますか?

Advertisement
Advertisement

回答 (9)

255
255
255
2011-04-11 19:58:42 +0000

OS X の Leopard リリースでは、ssh-agent は Keychain とより緊密に統合されています。すべての SSH 鍵のパスフレーズを Keychain に安全に保存することができ、起動時に ssh-agent がそのパスフレーズを読み取ることができます。要するに、パスフレーズで鍵を保護するのは簡単ですが、パスフレーズを入力して使う必要はありません! 以下にその方法を示します。

各 ssh 鍵にパスフレーズをキーチェーンに追加します。(オプション -k はプレーンな秘密鍵のみをロードし、証明書はスキップします)

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

(大文字の K に注意)

Mac を再起動するたびに、キーチェーン内のすべての SSH 鍵が自動的にロードされます。Keychain Access アプリや、コマンドラインからもキーを見ることができるはずです。

ssh-add -l
82
82
82
2016-12-12 18:17:44 +0000

macOS Sierra_ 以降、ssh-agent はアカウントにログインしたときに以前に読み込まれた ssh 鍵を自動的にロードしなくなりました。これは Apple 側で意図的に行われたもので、彼らは主流の OpenSSH の実装に合わせて再調整したかったのです。[[1]]](https://openradar.appspot.com/27348363)


説明されているように ここ 、これは macOS 10.12.2 以降で推奨されている方法です:

  1. ~/.ssh/config ファイルに以下の行を追加してください。

    1. ssh-add /path/to/your/private/key/id_rsa コマンドを使用して ssh-agent に追加したキーは、自動的にキーチェーンに追加され、再起動時にオートロードされます。

以下は非推奨です (参照用に保存されています)。

以前の動作に戻すには、ログイン時に ssh-add -A コマンド (キーチェーン上のパスフレーズを持つすべての ssh 鍵を自動ロードします) を実行します。これを実行するには、以下の手順に従ってください。

1.まず、ssh-add -K /absolute/path/to/your/private/key/id_rsa コマンドを使用して、自動ロードするすべての鍵を ssh-agent に追加します。-K 引数は、キーのパスフレーズが macOS の keychain に追加されることを確実にします。キーへの絶対パスを使用するようにしてください。相対パスを使用すると、自動起動スクリプトがキーを見つけられなくなります。

  1. ssh-add -A と入力したときに、すべてのキーが追加されたものとして表示されていることを確認してください。

  2. com.yourusername.ssh-add.plistの中に~/Library/LaunchAgents/というファイルを作成し、以下の内容で作成します。このようなリストファイルは、launchdがログイン時にスクリプトを実行するために使用します。[2] [3

  3. launchdに、先ほど作成したplistファイルを実行して読み込むように指示します。launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist.

これで準備は完了です。

34
Advertisement
34
34
2017-01-05 18:53:54 +0000
Advertisement

10.12 Sierraを実行しているMacのセッション/再起動の間にパスワードを保持するには、 Ricardo’s answer よりも簡単な方法があります。

  1. ssh-add -K ~/.ssh/id_rsa 注意:id_rsaキーがある場所へのパスを変更してください。
  2. ssh-add -A
  3. 以下の ~/.ssh/config ファイルを作成(または存在する場合は編集)。

Appleは、この OpenRadar , Twitter discussion , および Appleからのテクニカルノート で指摘されているように、macOS 10.12 Sierraのssh-agentの動作を意図的に変更して、以前のSSH鍵を自動的に読み込まなくしました。上記の解決策では、El Capitanの古い挙動を真似して、パスワードを記憶するようになります。

17
17
17
2009-12-28 17:37:32 +0000

これを動作させるには、環境変数 $SSH_AUTH_SOCK/tmp/launch-xxxxxx/Listeners に向ける必要があります。これはログイン時に自動的に行われるはずです。このソケットのリスナーは ssh-agent プロトコルを話します。

あなたの bash スクリプトは、あなた自身の ssh エージェント (ssh_agent ではなく、ssh-agent と綴ります) を起動し、ログイン時に設定されている既存の ssh-agent をオーバーライドしています。

また、キーチェーンの全体的なポイントは ssh 鍵のパスワードを保存することですが、あなたはそれらの鍵にパスフレーズを設定していないと言っていますので、キーチェーンの統合から何を期待しているのかわかりません。

最後に、最初にログインしたときには、おそらく ssh-agent プロセスは表示されません。このプロセスは、何かが最初に /tmp のソケットを読もうとしたときに、 launch services によって自動的に起動されます。

10
Advertisement
10
10
2011-04-28 13:28:40 +0000
Advertisement

注意: macOS Sierraの場合は、最新の ChrisJFによる回答を参照してください。

[Jeff McCarrellによる回答][2]は正しいのですが、パスフレーズを追加するコマンドにハイフンの代わりにエンダッシュが含まれていること、つまり–Kの代わりに-Kが含まれていることを除いては、–K: No such file or directoryのようなメッセージが発生します。これは次のように読まれるべきである:

ssh-add -K [path/to/private SSH key]
6
6
6
2013-10-14 12:29:41 +0000

クライアントの ssh 証明書を使ってログインしようとしたときに、同じような問題が発生しました。この特定のケースでは、git リポジトリにアクセスするためのものでした。このような状況でした。

  • 鍵は ~/.ssh/
  • 秘密鍵にはパスフレーズがあります。

  • パスフレーズは OS X のログインキーチェーンに保存されている。~/Library/Keychains/login.keychain

  • 接続したのは、私のmac -> リモートmac -> git/sshサーバー

  • Mac OS X 10.8.5

リモートデスクトップを使ってリモートmacに接続したときは問題ありませんでした。しかし、リモートmacにSSHで接続すると、毎回sshのパスフレーズを聞かれてしまいました。以下の手順で解決しました。

1.security unlock-keychain パスフレーズはログインキーチェーンに保存されています。これでロックが解除され、ssh-agentがアクセスできるようになります。 2. evalssh-agent -sシェル使用のために ssh-agent を起動します。これは、キーチェーンからパスフレーズを取得し、それを使用して ssh の秘密鍵のロックを解除します。 3. ssh/git接続を確立して、自分の仕事をする。 4. `eval `ssh-agent -k 実行中のssh-agentを終了。 5. security lock-keychain キーチェーンを再びロック。

6
Advertisement
6
6
2009-12-28 12:55:13 +0000
Advertisement

デフォルトの ssh コマンドを使用していないのではないかと思います。ssh は ports 経由でインストールされていますか?which sshを試してみて、どのsshコマンドを使っているか確認してください。

通常、キーチェーンにパスワードが保存されていなければ、パスワードを尋ねるダイアログボックスが表示されるはずです。

4
4
4
2014-03-26 09:45:49 +0000

こちらも参照してください。

security import priv_key.p12 -k ~/Library/Keychains/login.keychain
security import pub_key.pem -k ~/Library/Keychains/login.keychain

… より詳細な情報を求められたので、このメモを追加しました: “security” コマンドは Keychains に直接鍵 (やその他のもの) をインポートすることができます。いいところは、ssh-addと違って、キーチェーンを指定できるところです。これにより、システムの Keychain に直接インポートすることが可能になります (方法は “man security” を参照してください)。

1
Advertisement
1
1
2017-01-26 10:39:16 +0000
Advertisement

(macOS 10.12.2以降)_は こちら

以下のようにしてください。

Advertisement

関連する質問

19
12
5
16
8
Advertisement