1942

次のエラーが発生しています。

$ git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known hosts.
!  Your key with fingerprint b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65 is not authorized to access bitstarter.

キーを追加しようとしましたが、以下のエラーが表示されます。

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
4

38 に答える 38

299

次のコマンドは私にとってはうまくいきました。CentOSを使用しています。

exec ssh-agent bash
于 2013-12-05T15:10:28.707 に答える
230

MsysGit または Cygwin

Msysgit または Cygwin を使用している場合は、SSH-Agent in msysgit と cygwin および bash で適切なチュートリアルを見つけることができます。

  1. .bashrcという名前のファイルをホーム フォルダーに追加します。

  2. ファイルを開いて貼り付けます。

    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add
    
  3. これは、キーが従来の場所にあることを前提としています~/.ssh/id_rsa。そうでない場合は、コマンドの後にフル パスを含めますssh-add

  4. ~/.ssh/config内容を含むファイルに追加または作成する

    ForwardAgent yes
    

    元のチュートリアルではForwardAgentparam は ですYesが、タイプミスです。すべて小文字を使用しないと、エラーが発生します。

  5. Msysgit を再起動します。パスフレーズを 1 回入力するように求められます。それで終わりです (セッションを終了するか、ssh-agent が強制終了されるまで)。

Mac/OS X

ターミナルを開くたびに新しい ssh-agent を開始したくない場合は、Keychainを確認してください。私は現在 Mac を使用しているので、Mac OS X で zsh とキーチェーンを使用したチュートリアル ssh-agentを使用してセットアップしましたが、Google 検索で Windows に関する情報が十分に得られると確信しています。

更新: Mac でのより良い解決策は、キーを Mac OS キーチェーンに追加することです。

ssh-add -K ~/.ssh/id_rsa

そのような単純な。

于 2012-04-09T17:43:54.207 に答える
129

ssh-add と ssh (openssh 実装を使用していると仮定) には、ssh エージェントと通信する方法を知るための環境変数が必要です。現在使用しているコマンド プロンプト ウィンドウとは別のコマンド プロンプト ウィンドウでエージェントを起動した場合、または誤って起動した場合、ssh-add も ssh もその環境変数セットを認識しません (環境変数はコマンドに対してローカルに設定されるため)。プロンプトが表示されます)。

使用している ssh のバージョンはわかりませんが、cygwin を使用している場合は、Cygwin の SSH エージェントからこのレシピを使用できます。

# Add to your Bash config file
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
    trap "kill $SSH_AGENT_PID" 0
fi

これにより、新しいコマンド プロンプト ウィンドウを開くたびにエージェントが自動的に開始されます (1 つのセッションで複数のコマンド プロンプトを開く場合は最適ではありませんが、少なくとも機能するはずです)。

于 2010-11-03T11:53:19.340 に答える
115

を使用する代わりにssh-agent -s、私はeval `ssh-agent -s` この問題を解決していました。

これが私が段階的に実行したものです( Git Bashのステップ2以降):

  1. の.sshフォルダーをクリーンアップしましたC:\user\<username>\.ssh\
  2. 新しい SSH キーを生成しました: ssh-keygen -t rsa -b 4096 -C "xyz@abc.com"
  3. プロセス ID (ssh エージェント) が既に実行されているかどうかを確認します。 ps aux | grep ssh
  4. (オプション) ステップ 3 で見つかった場合は、それらを強制終了します kill <pids>
  5. SSHエージェントを起動しました $ eval `ssh-agent -s`
  6. 手順 2 で生成された SSH キーを SSH エージェントに追加しました ssh-add ~/.ssh/id_rsa
于 2016-01-07T10:31:20.923 に答える
59

Windows 10 では、ここにリストされているすべての回答を試しましたが、どれもうまくいかないようでした。実際、彼らは手がかりを与えます。問題を解決するには、3 つのコマンドが必要です。この問題の考え方は、ssh-add が SSH_AUTH_SOCK および SSH_AGENT_PID 環境変数を現在の ssh-agent sock ファイル パスと pid 番号で設定する必要があるということです。

ssh-agent -s > temp.txt

これにより、ssh-agent の出力がファイルに保存されます。テキスト ファイルの内容は次のようになります。

SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;

テキスト ファイルから「/tmp/ssh-kjmxRb2764/agent.2764」などをコピーし、コンソールで次のコマンドを直接実行します。

set SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764

テキスト ファイルから「3044」などをコピーし、コンソールで次のコマンドを直接実行します。

set SSH_AGENT_PID=3044

環境変数 (SSH_AUTH_SOCK および SSH_AGENT_PID) が現在のコンソール セッションに設定されている場合、ssh-add コマンドを実行すると、ssh エージェントへの接続に再び失敗することはなくなります。

于 2015-06-12T13:58:51.757 に答える
28

Windows 7に対するn3oの回答を増幅するには...

私の問題は確かに、いくつかの必要な環境変数が設定されていないことでした.n3oは、ssh-agentがそれらの環境変数の設定方法を教えてくれるが、実際にはそれらを設定していないことは正しいです.

Windows では "eval" を実行できないため、代わりに次のようにします。

ssh-agent の出力をバッチ ファイルにリダイレクトします。

ssh-agent > temp.bat

ここで、メモ帳などのテキスト エディタを使用して temp.bat を編集します。最初の 2 行のそれぞれについて:

  • 行の先頭に「set」という単語とスペースを挿入します。
  • 最初のセミコロンとそれに続くすべてを削除します。

ここで 3 行目を削除します。temp.bat は次のようになります。

set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608

temp.batを実行します。これにより、ssh-add が機能するために必要な環境変数が設定されます。

于 2013-12-19T14:57:13.297 に答える
20

私はこれを機能させました。ファイルを開きます~/.ssh/config

以下を追加します-

Host github.com
 IdentityFile ~/.ssh/github_rsa

Git 用に SSH をセットアップするヒントを与えてくれたページには 、単一スペースのインデントが重要であると書かれていましたが、ここでは Heroku からそのスペースがなく、適切に動作するように構成していました。

于 2014-02-25T03:42:47.197 に答える
19

これらの指示に従えば、問題は解決します。

Mac または Linux マシンを使用している場合は、次のように入力します。

eval "$(ssh-agent -s)"

Windows マシンを使用している場合は、次のように入力します。

ssh-agent -s
于 2014-11-08T13:20:31.150 に答える
10

サーバーに接続するときにパラメーター -A を使用します。例:

ssh -A root@myhost

マニュアルページから:

-A Enables forwarding of the authentication agent connection.  
   This can also be specified on a per-host basis in a configuration file.

   Agent forwarding should be enabled with caution.  Users with the ability to bypass file permissions on the remote host (for the agent's
   UNIX-domain socket) can access the local agent through the forwarded 
   connection.  An attacker cannot obtain key material from the agent,
   however they can perform operations on the keys that enable them to
   authenticate using the identities loaded into the agent.
于 2016-08-09T13:31:12.390 に答える
10

次のことを試してください。

ssh-agent sh -c 'ssh-add && git push heroku master'
于 2015-03-26T21:13:48.177 に答える
7

ssh-agent を起動したときに、既に実行されていたときにこの問題が発生しました。混乱します。これが当てはまるかどうかを確認するには、次を使用します

eval $(ssh-agent)

これがあなたが思っていたものと同じかどうかを確認します。私の場合、それは私が始めたばかりのものとは異なりました。

複数の ssh-agent が実行されているかどうかをさらに確認するには、次を確認できます。

ps -ef | grep ssh
于 2014-07-04T08:48:24.773 に答える
7

Read user456814's answer for explanations. Here I only try to automate the fix.

If you using a Cygwin terminal with Bash, add the following to the $HOME/.bashrc file. This only starts ssh-agent once in the first Bash terminal and adds the keys to ssh-agent. (I am not sure if this is required on Linux.)

###########################
# start ssh-agent for
# ssh authentication with github.com
###########################
SSH_AUTH_SOCK_FILE=/tmp/SSH_AUTH_SOCK.sh
if [ ! -e $SSH_AUTH_SOCK_FILE ]; then
    # need to find SSH_AUTH_SOCK again.
    # restarting is an easy option
    pkill ssh-agent
fi
# check if already running
SSH_AGENT_PID=`pgrep ssh-agent`
if [ "x$SSH_AGENT_PID" == "x" ]; then
#   echo "not running. starting"
    eval $(ssh-agent -s) > /dev/null
    rm -f $SSH_AUTH_SOCK_FILE
    echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > $SSH_AUTH_SOCK_FILE
    ssh-add $HOME/.ssh/github.com_id_rsa 2>&1 > /dev/null
#else
#   echo "already running"
fi
source $SSH_AUTH_SOCK_FILE

Don’t forget to add your correct keys in the "ssh-add" command.

于 2015-07-09T05:48:04.137 に答える
6

追加する前に、次のコマンドを実行する必要があります。

eval `ssh-agent -s`

次に、この方法でコマンドを実行する必要があります。

ssh-add ~/.ssh/id_rsa
于 2021-11-20T08:58:19.750 に答える
5

Windows 10 に組み込まれている Bash の場合、これをファイル.bash_profileに追加しました。

if [ -z $SSH_AUTH_SOCK ]; then
    if [ -r ~/.ssh/env ]; then
            source ~/.ssh/env
            if [ `ps -p $SSH_AGENT_PID | wc -l` = 1 ]; then
                    rm ~/.ssh/env
                    unset SSH_AUTH_SOCK
            fi
    fi
fi

if [ -z $SSH_AUTH_SOCK ]; then
    ssh-agent -s | sed 's/^echo/#echo/'> ~/.ssh/env
    chmod 600 ~/.ssh/env
    source ~/.ssh/env > /dev/null 2>&1
fi
于 2016-04-26T16:07:14.453 に答える
5

これをWindowsで動作させてSSH経由でスタッシュに接続しようとしたときに、同様の問題が発生しました。

これが私のために働いた解決策です。

  1. Windows ボックスで Pageant ssh エージェントを実行していたことが判明しました。実行しているものを確認します。PuTTY と WinSCP にデフォルトで付属しているため、Pageant であると思われます。

  2. このタイプのエージェントでは、コマンド ラインから ssh-add が機能しません。

  3. タスクバーの Pageant アイコンをダブルクリックして取得できる Pageant UI ウィンドウを介して秘密鍵を追加する必要があります (起動後)。

  4. キーを Pageant に追加する前に、キーをPPK形式に変換する必要があります。完全な手順はこちらで入手できますSSHキーをppk形式に変換する方法

  5. それだ。キーを stash にアップロードすると、Sourcetree を使用してローカル リポジトリを作成し、リモートのクローンを作成できました。

于 2014-11-17T14:14:01.153 に答える
4

git プロセス (ssh エージェント) を強制的に停止 (強制終了) し、Git をアンインストールしてから、Git を再度インストールすることでエラーを解決しました。

于 2014-04-19T10:18:33.103 に答える
2

Windows の PowerShell の場合

Start-SshAgent私は PowerShell と/コマンドで問題を抱えていたAdd-SshKeyので、一部の人々を助けるかもしれない簡単なスクリプトを作成しました。これは、次を実行して編集できる PowerShell プロファイルに追加することを目的としていますnotepad $PROFILE

if ($(Get-Process ssh-agent) -eq $null)
{
     $ExecutionContext.InvokeCommand.ExpandString($(ssh-agent -c).Replace("setenv", "set"));
}

が実行されているかどうかを検出し、ssh-agentエージェントがまだ実行されていない場合にのみ実行します。$ExecutionContext.InvokeCommand.ExpandStringは非常に危険なコマンドであるため、信頼されていない のコピーを使用している場合は、このソリューションを使用したくない場合があることに注意してくださいssh-agent

于 2015-12-04T13:10:37.943 に答える
0

「認証エージェントへの接続を開けませんでした」というメッセージが表示されました。SSH キーの生成および追加中にコマンドを実行する場合: ssh-add ~/.ssh/id_rsa.

マシンで実行されている複数のインスタンスを停止して解決ssh-agentし、Windows マシンのコントロール パネルから Git をアンインストールしてから、Git を再度インストールしたところ、問題なく動作していました。

于 2014-04-19T10:24:44.507 に答える