macOSにアップグレードしてからこのコマンドを実行する必要があります。
ssh-add -K
再起動後に問題を修正しますが、コンピューターにログオンするたびにこのコマンドを実行する必要があります。
上記のコマンドを実行しない場合、キー入力~/.ssh
はスキップされ、接続を確立するためにサーバーパスワードが要求されます。
-K
ます。解決策については、@ JakeGouldの回答を参照してください。
macOSにアップグレードしてからこのコマンドを実行する必要があります。
ssh-add -K
再起動後に問題を修正しますが、コンピューターにログオンするたびにこのコマンドを実行する必要があります。
上記のコマンドを実行しない場合、キー入力~/.ssh
はスキップされ、接続を確立するためにサーバーパスワードが要求されます。
-K
ます。解決策については、@ JakeGouldの回答を参照してください。
回答:
macOS Sierra 10.12.2の時点で、Apple は問題の「適切な」解決を可能にするというssh_config
オプションを追加しましたUseKeychain
。以下を~/.ssh/config
ファイルに追加します。
Host *
AddKeysToAgent yes
UseKeychain yes
ssh_config
man
10.12.2 のページから:
UseKeychain
macOSでは、特定のキーを使用しようとするときに、システムがユーザーのキーチェーン内のパスフレーズを検索するかどうかを指定します。ユーザーがパスフレーズを提供する場合、このオプションは、パスフレーズが正しいことを確認したら、キーチェーンに保存するかどうかも指定します。引数は「yes」または「no」でなければなりません。デフォルトは「no」です。
IdentityFile ~/.ssh/id_rsa
は冗長であり、必要ではないと思います(デフォルトのオプションを見るとき)。私のssh設定ファイルでそのオプションを設定したことはありません。
~/.ssh/config~
は、ssh
レベルで問題を解決するので望ましいです。.bash_profile
シェルを使用せずにsshを使用してGUIクライアントでmodが機能することを100%確信することはできません。
Capistranoを使用してコードを展開しようとしたときにも、この問題が発生しました。とてもイライラします。この問題に対処するために私が知っている2つの方法があります。
そこで私が見つけた解決策の1つは、次のように、キーチェーンに保存されたパスフレーズを使用して既知のすべてのIDをSSHエージェントに追加ssh-add
する-A
オプションを実行することです。
ssh-add -A
これは機能しますが、再起動しても持続しません。このことを二度と心配したくない場合は、次の~/.bash_profile
ようにユーザーのファイルを開いてください。
nano ~/.bash_profile
そして、この行を一番下に追加します:
ssh-add -A 2>/dev/null;
これで、新しいターミナルウィンドウを開くと、すべてがうまくいくはずです!
そのため、このssh-add -A
オプションはほとんどの基本的なケースで機能するはずですが、最近一般的なものに加えて6-7個のVagrantボックス(アクセスにSSHキー/ IDを使用)がセットアップされているという問題に遭遇しましたid_rsa.pub
。
簡単に言えば、サーバーアクセスはパスワードに基づいており、SSHキー/ IDはSSHキー/ IDであるため、SSHキー/ IDに基づく試行の失敗が多すぎるため、リモートサーバーからロックアウトされました。そのため、SSHエージェントはすべてのSSHキーを試行しましたが、失敗し、パスワードプロンプトを表示することさえできませんでした。
問題は、そうssh-add -A
する必要がない場合でも、必要なすべてのSSHキー/ IDをエージェントに任意に追加するだけであるということです。Vagrantボックスの場合など。
多くのテストを行った後の私のソリューションは次のとおりでした。
最初に、必要以上に多くのSSHキー/ IDがエージェントに追加されている場合- ssh-add -l
次に示すように、エージェントからそれらをすべてパージします。
ssh-add -D
それが完了したら、次のようにバックグラウンドプロセスとしてSSHエージェントを起動します。
eval "$(ssh-agent -s)"
今、それは奇妙になります、そして、私は理由があまりわかりません。場合によっては、次のように~/.ssh/id_rsa
キー/アイデンティティをエージェントに明確に追加できます。
ssh-add ~/.ssh/id_rsa
パスフレーズを入力してヒットするReturnと、準備が整います。
しかし、他のケースでは、単にこれを実行するだけで、キー/アイデンティティを追加するのに十分です:
ssh-add -K
それがすべて機能する場合は、入力するssh-add -l
と、1つの孤立したSSHキー/ IDが一覧表示されます。
いいですか 次を開きます.bash_profile
:
nano ~/.bash_profile
そして、この行を一番下に追加します。-A
バージョンがある場合はコメントするか削除してください:
ssh-add -K 2>/dev/null;
これにより、起動/再起動のたびにSSHキー/ IDがSSHエージェントにリロードされます。
UseKeychain
、オープンSSH構成オプションにオプションを追加しssh-add -A
、解決策も検討しています。macOS Sierra 10.12.2の時点で、AppleはUseKeychain
SSH構成用の構成オプションを追加しました。(を介してman ssh_config
)manページを確認すると、次の情報が表示されます。
UseKeychain
On macOS, specifies whether the system should search for
passphrases in the user's keychain when attempting to use a par-
ticular key. When the passphrase is provided by the user, this
option also specifies whether the passphrase should be stored
into the keychain once it has been verified to be correct. The
argument must be ``yes'' or ``no''. The default is ``no''.
これは追加のいずれかのような溶液を見てアップルに沸くssh-add -A
あなたに.bash_profile
、このオープンレーダーチケットに説明するように、または追加するUseKeychain
ユーザーごとのオプションの一つとして~/.ssh/config
。
ssh-add -K [path to key]
プロンプトが表示されたらpwを入力します。キーチェーンはパスワードを保存し、その後ssh-addはそこから取得します。
UseKeychain
とAddKeysToAgent
自動的にあなたはssh_configからあなたの鍵を追加します。シェルスクリプトは必要ありません。10.12.2
ssh-add -A
。あなたはあなたの鍵は常にロードされるようにしたい場合は、あなたのrcスクリプトに」 ¯\_(ツ)_/¯
ここで説明したように、これはmacOS 10.12.2以降の推奨される方法です。
~/.ssh/config
ファイルに次の行を追加します。
Host *
UseKeychain yes
AddKeysToAgent yes
コマンドを使用してssh-agentに追加したキーはすべてキーssh-add /path/to/your/private/key/id_rsa
チェーンに自動的に追加され、再起動時に自動ロードされる必要があります。
私はこの答えを追加しています:
IdentityFile ~/.ssh/id_rsa
行を追加するように指示されていますが、キーを自動ロードするためにそのオプションは必要ありません別のホット)。UseKeychain
が記載されていますがssh-agent
、再起動後もキーを保持するには不十分です。ssh-add -L
、それが報告されますThe agent has no identities
。接続するまで何もありません。ザ・はAddKeysToAgent
どのような方法で、再起動の間で鍵を保持されません!
あなたに役立つかもしれないこのトピックについての短い投稿を書きました。
解決策はssh-add -A
、すべての起動時にコマンドを呼び出すことです。
.plist
次の内容のファイルをパスに追加~/Library/LaunchAgents/
するか、Lingonアプリで作成します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ssh-add-a</string>
<key>ProgramArguments</key>
<array>
<string>ssh-add</string>
<string>-A</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
<!-- @@@@LingonWhatStart:ssh-add -A@@@@LingonWhatEnd -->
macOS 10.12.2以降、このUseKeychain
オプションを使用できます。
もっとここで読むかを調べますman ssh_config
。
UseKeychain
On macOS, specifies whether the system should search for passphrases in the user's keychain
when attempting to use a particular key. When the passphrase is provided by the user, this
option also specifies whether the passphrase should be stored into the keychain once it has
been verified to be correct. The argument must be ``yes'' or ``no''. The default is ``no''.
したがって、次のことを行ってください。
echo "UseKeychain yes" >> ~/.ssh/config
以前にこの問題がありましたが、これを回避する方法を見つけました。という名前のファイルを作成しましたconfig
、私の中で~/.ssh
:私は次の行を追加したフォルダを、
Host github.com
HostName github.com
IdentityFile ~/.ssh/github
IdentitiesOnly yes
理由はわかりませんがHost
、HostName
両方が重要です。私の場合、そのうちの1つが存在しない場合、ソリューションは機能しませんでした。
その後、私はちょうどやったssh-add -K
し、再起動後も動作していました。
異なるバージョンのsshを使用している場合(たとえば、homebrewを使用してインストールした場合)、上記のソリューションはそのままでは機能しません。たとえば、ファイル内AddKeysToAgent yes
およびApple以外のsshバージョンでは認識されず、エラーが発生します。以下のために同じかUseKeychain yes
.ssh/config
-A
-K
ssh
クライアントのオプションについてもです。
つまり、@mluisbrownの答えはまったく機能しません。@JakeGouldの回答の方法1を使用して、macOS ssh-add
ユーティリティを明示的に使用して、.bash_profile
すべてのキーをキーチェーンに追加できます。
/usr/bin/ssh-add -A
上記のコメントで述べたように、最初にキーチェーンにキーを追加する必要がある場合があります。/usr/bin/ssh-add -K .ssh/github
Mac OS X Sierra(10.12.6)にアップデートしました。他のホストにsshできましたが、github.comにはできませんでした。
これは私が〜/ .ssh / configに挿入しなければならなかったものです:
PubkeyAcceptedKeyTypes ssh-dss,ssh-rsa
その変更の後、以前と同様にgithubを使用できました。
$ ssh-add -K
私に与えるssh-add: illegal option -- K