web-dev-qa-db-ja.com

認証エージェントへの接続を開けませんでした

私はこのエラーに遭遇しています:

$ 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.
1354
Danny Dai Smith

ssh-agentを始めましたか?

ssh-agentコマンドを実行する前に、ssh-addを起動する必要があります。

eval `ssh-agent -s`
ssh-add

これにより、Windows上の msysgit Bash のエージェントが起動されます。別のシェルまたはオペレーティングシステムを使用している場合は、 その他の回答 にリストされているものなど、コマンドの変形を使用する必要があります。

次の答えを見てください。

  1. ssh-addは文句を言います:あなたの認証エージェントへの接続を開くことができませんでした
  2. Git Pushにはユーザー名とパスワードが必要です (ssh-agentの使用方法に関する詳細な説明が含まれています)
  3. 認証エージェントを(git/ssh)実行するにはどうすればいいですか?
  4. あなたの認証エージェントへの接続を開けませんでした

Ssh-agentを自動的に起動し、単一のインスタンスが複数のコンソールウィンドウで動作できるようにするには、 ログイン時にssh-agentを起動する を参照してください。

ssh-agentだけでなくevalを使う必要があるのはなぜでしょうか。

その理由については、 Robin Greenの答え を参照してください。

公開鍵と秘密鍵

また、私がssh-addを使うときはいつでも、私はいつもそれに秘密鍵を追加します。ファイル~/.ssh/id_rsa.pubは公開鍵のように見えますが、それがうまくいくかどうかはわかりません。 ~/.ssh/id_rsaファイルはありますか?あなたがそれをテキストエディタで開くならば、それはそれが秘密鍵であると言いますか?

2057
user456814

私は無駄に他の解決策を試してみました。私はさらに研究を重ねたところ、次のコマンドがうまくいくことがわかりました。私はWindows 7と Git Bash を使っています。

eval $(ssh-agent)

でより多くの情報: https://coderwall.com/p/rdi_wq

490
Victor Alves

次のコマンドは私のために働きました。私はCentOSを使っています。

exec ssh-agent bash
239
mianjee

MsysGitまたはCygwin

MsysgitまたはCygwinを使用している場合は、 SSH-Agent(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
    

    最初のチュートリアルではForwardAgentパラメータはYesですが、それはタイプミスです。すべて小文字で使用するとエラーが発生します。

  5. Msysgitを再起動します。それはあなたに一度あなたのパスフレーズを入力するように頼むでしょう、そしてそれはそれです(あなたがセッションを終了するか、あなたの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

そのような単純な。

199
RobW

認証エージェントへの接続を開けませんでした

このエラーを解決するには

bash:

$ eval `ssh-agent -s`

tcsh:

$ eval `ssh-agent -c`

それから通常どおりssh-addを使用してください。


ヒント:

私はいつも上記のssh-agentコマンドのために何をタイプするべきか忘れていたので、私はこのように私の.bashrcファイルにエイリアスを作成しました:

alias ssh-agent-cyg='eval `ssh-agent -s`'

今ではssh-agentを使う代わりに、ssh-agent-cygを使うことができます。

例えば。

$ ssh-agent-cyg
SSH_AUTH_SOCK=/tmp/ssh-n16KsxjuTMiM/agent.32394; export SSH_AUTH_SOCK;
SSH_AGENT_PID=32395; export SSH_AGENT_PID;
echo Agent pid 32395;
$ ssh-add ~/.ssh/my_pk

元の修正ソース:

http://cygwin.com/ml/cygwin/2011-10/msg00313.html

190
Chris Snow

私はLinuxについても同じ問題に直面しました、そして私がしたことがここにあります:

基本的に、コマンドssh-agentはエージェントを起動しますが、実行するための環境変数を実際には設定しません。それらの変数をシェルに出力するだけです。

必要がある:

eval `ssh-agent`

そしてssh-addを実行してください。を参照してください。認証エージェントへの接続を開けませんでした

114
n3o

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つのセッションで複数のコマンドプロンプトを開くと最適ではありませんが、少なくとも機能するはずです)。

108
Robin Green

次の手順を試してください。

1)Git Bashを開いて実行します。cd ~/.ssh

2)エージェントを実行してみます。eval $(ssh-agent)

3)今、以下のコマンドを実行することができます。ssh-add -l

93
ChechoroArtem

$ ssh-agent -sを使う代わりに、私はこの問題を解決するために$ eval `ssh-agent -s`を使った。

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

  1. 私の.sshフォルダをC:\user\<username>\.ssh\に片付けました
  2. 新しいSSHキーを生成しました
    $ ssh-keygen -t rsa -b 4096 -C "[email protected]"
  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
69
vinsinraw

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エージェントへの接続に失敗することはありません。

50
BIOHAZARD

私が遭遇した1つのことは、Cygwinを使用してevalが私のために機能しなかったことでした。私のために機能したのはssh-agent ssh-add id_rsaでした。

その後、私の秘密鍵があまりにもオープンであるという問題に遭遇しました。私はそれを見つけることができました( here から):

chgrp Users id_rsa

と同様

chmod 600 id_rsa

ついに私は使うことができました:

ssh-agent ssh-add id_rsa
29
Vnge

Windows 7のためのn3oの答えを増幅するために...

私の問題は、実際には必要な環境変数が設定されていないことです。nshは、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が動作するのに必要な環境変数を設定します。

26
Steve Saporta

実行する

ssh-agent bash
ssh-add

より多くの詳細を取得するにはあなたが検索することができます

ssh-agent

または走る

man ssh-agent
25
bp zhang

私はこれがうまくいった。 ~/.ssh/configファイルを開きます。

以下を添付してください -

Host github.com
 IdentityFile ~/.ssh/github_rsa

GitのためのSSHの設定 というヒントをくれたページでは、ここにHerokuの設定があり、そのスペースがなく、正しく機能することを確認しました。

17
Paul Becotte

あなたがこれらの指示に従えば、あなたの問題は解決されるでしょう。

MacまたはLinuxの場合は、次のように入力します。

eval "$(ssh-agent -s)"

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

ssh-agent -s
15
Fahim Boron

注:これは この質問に対する答えです 、これはこれとマージされました。その質問はWindows 7に対するもので、私の答えはCygwin/MSYS/MSYS2に対するものでした。これは一部のUNIXのようで、SSHエージェントをこのように管理する必要があるとは思わないでしょう

これにより、SSHエージェントが実行され、Bashターミナルを開くたびにではなく、最初に必要なときにのみ認証されます。 ssh自体およびscpを含む、一般にSSHを使用するすべてのプログラムに使用できます。これを/etc/profile.d/ssh-helper.shに追加するだけです:

ssh-auth() {
    # Start the SSH agent only if not running
    [[ -z $(ps | grep ssh-agent) ]] && echo $(ssh-agent) > /tmp/ssh-agent-data.sh

    # Identify the running SSH agent
    [[ -z $SSH_AGENT_PID ]] && source /tmp/ssh-agent-data.sh > /dev/null

    # Authenticate (change key path or make a symlink if needed)
    [[ -z $(ssh-add -l | grep "/home/$(whoami)/.ssh/id_rsa") ]] && ssh-add
}

# You can repeat this for other commands using SSH
git() { ssh-auth; command git "$@"; }
12
Renato Silva

別の解決策を提案しましょう。 Git 1.8.2.2またはその付近をインストールしたばかりでSSHを有効にしたい場合は、よく書かれた の指示 に従ってください。

ステップ5.6に至るまでのすべてのステップで、わずかな障害が発生する可能性があります。 SSHエージェントがすでに実行されている場合は、bashを再起動すると次のエラーメッセージが表示されることがあります。

Could not open a connection to your authentication agent

実行している場合は、次のコマンドを使用して、複数のssh-agentプロセスが実行されているかどうかを確認してください。

ps aux | grep ssh

複数のssh-agentサービスが見られる場合は、これらすべてのプロセスを強制終了する必要があります。次のようにkillコマンドを使用してください(PIDはあなたのコンピュータ上で一意です)。

kill <PID>

例:

kill 1074

すべてのssh-agentプロセスを削除したら、次のコマンドを実行してください。 px aux | grep ssh それらが消えたことを確認するために再度コマンドを発行してから、Bashを再起動してください。

さて、これでこんな風になったはずです。

Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:

これでステップ5.7以降に進むことができます。

11
Rick

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

ssh -A root@myhost

manページから:

-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.
8
Lebnik

ssh-agentを実行するための基本的な解決策は、多くの回答で回答されています。ただし、ssh-agentを何度も(開いた各ターミナルまたはリモートログインごとに)実行すると、メモリ内で実行されるssh-agentのコピーが多数作成されます。この問題を回避するために推奨されるスクリプトは長く、分離されたファイルを記述および/またはコピーする必要があるか、~/.profileまたは~/.schrcに多くの文字列を書き込む必要があります。 単純な2文字列ソリューション:を提案させてください

shbashなどの場合:

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh

cshtcshなどの場合:

# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`

ここにあるもの:

  • 名前と現在のユーザーでプロセスssh-agentを検索します
  • ssh-agentを呼び出して適切なシェルスクリプトファイルを作成し、現在のユーザーssh-agentプロセスが見つからない場合はssh-agent自体を実行します
  • 適切な環境を構成する作成されたシェルスクリプトを評価する

作成されたシェルスクリプト~/.ssh-agent.tcshまたは~/.ssh-agent.shを他のユーザーアクセスから保護する必要はありません。ssh-agentとの最初の通信は、別のユーザーがアクセスできない保護されたソケットを介して処理されます。すぐに別のユーザーは、ssh-agentディレクトリ内の列挙ファイルによって/tmp/ソケットを見つけることができます。 ssh-agentプロセスへのアクセスに関しては、同じことです。

7
oklas

以下を試してください。

ssh-agent sh -c 'ssh-add && git Push heroku master'
5
kenorb

説明を読むには @ cupcake's answer を読んでください。ここで私はただ修正を自動化することを試みます。

Cygwin端末をBASHと併用している場合は、$ HOME/.bashrcファイルに以下を追加してください。これは最初のBash端末で一度だけssh-agentを起動し、キーをssh-agentに追加します。 (これが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

「ssh-add」コマンドで正しいキーを追加することを忘れないでください。

5
Kiran Mohan

Ssh-agentを起動したとき、すでに実行されていたときに、この問題が発生しました。混乱します。そうであるかどうかを確認するには、

eval $(ssh-agent)

これがあなたがそれがあるべきであると思ったものと同じであるかどうか見るために。私の場合は、始めたばかりのものとは異なりました。

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

ps -ef | grep ssh
4
Jahmic

私はUbuntuでも同じ問題を抱えていましたが、他の解決策は私を助けてくれませんでした。私はようやく自分の問題が何であるかに気づいた。 sshキーを/root/.sshフォルダーに作成したので、ssh-addをrootとして実行した場合でも、その作業を実行できず、言い続けることができませんでした

Could not open a connection to your authentication agent.

Sshの公開鍵と秘密鍵を/home/myUsername/フォルダーに作成して、

ssh-agent /bin/sh

それから私は走った

ssh-add /home/myUsername/.ssh/id_rsa

そして問題はこのように解決されました。

注: gitでリポジトリにアクセスするには、ssh-keygen -t rsa -C "your git email here"を使用してsshキーを作成するときにgitパスワードを追加してください。

4
Merka

私はssh経由で隠し場所に接続するためにこれをWindows上で動作させようとしていたときに私は同様の問題を抱えていました

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

  1. 私は自分のWindowsマシンでPageant sshエージェントを実行していました - あなたが何を実行しているのかチェックします。それはPuTTYとwinScpでデフォルトとして来るので、私はそれがPageantであると思う

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

  3. あなたは(それが開始されたら)あなたがタスクバーのPageantアイコンをダブルクリックすることによって得ることができるpageant UIウィンドウを介して秘密鍵を追加する必要があります。

  4. Pageantにキーを追加する前に、それをPPK形式に変換する必要があります。詳しい説明はこちら SSHキーをppk形式に変換する方法

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

お役に立てれば...

4
Moonwalker

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
3
Kip

これ 働いた 私のために/。

CMDウィンドウで、次のコマンドを入力します。

cd path-to-Git/bin # (for example,cd C:\Program Files\Git\bin)
bash
exec ssh-agent bash
ssh-add path/to/.ssh/id_rsa
3
kecco

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

3
Devendra Singh

PuTTYを使用している場合は、おそらく "Connection/SSH/Auth/Allow agent forwarding"オプションを "true"に設定する必要があります。

enter image description here

3
Vladius

Win8.1EでGit Bashを使用したときの私の解決策は次のとおりです。

eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
2
SrBlanco

WindowsのPowerShellの場合

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

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

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

2

リモートURLも確認してください。 https:// proptocolの代わりにgit @ github ...を使用してください。

https://stackoverflow.com/a/33928364/551811 を参照してください。

2
BraveNewMath

これが私がPowerShellを使うときに思いついた解決策です。

以下の関数をあなたのMicrosoft.PowerShell_profile.ps1に追加してください

function RunSsh($userIdentity ) {
   $agent=ssh-agent
   $position=$agent[0].IndexOf("=")
   $ending=$agent[0].IndexOf(";")

   $variableStartPosition=$agent[0].IndexOf("export")
   $variableEndPosition=$agent[0].LastIndexOf(";")
   $variableName=$agent[0].Substring($variableStartPosition+7,$variableEndPosition-$variableStartPosition-7)
   [Environment]::SetEnvironmentVariable($variableName, $agent[0].Substring($position+1,$ending-$position-1))

   $position=$agent[1].IndexOf("=")
   $ending=$agent[1].IndexOf(";")

   $variableStartPosition=$agent[1].IndexOf("export")
   $variableEndPosition=$agent[1].LastIndexOf(";")
   $variableName=$agent[1].Substring($variableStartPosition+7,$variableEndPosition-$variableStartPosition-7)
   [Environment]::SetEnvironmentVariable($variableName, $agent[1].Substring($position+1,$ending-$position-1))

   if($userIdentity.Length -eq 0) {
      ssh-add
   } else {
      ssh-add $userIdentity
   }
}

これで、コマンドラインから~\.sshフォルダー内のIDファイルを使用するRunSshを実行するか、RunSsh C:\ssh\id_rsaを使用してIDファイルを渡すことができます。ここでC:\ssh\id_rsaはユーザーのIDファイルです。

これが機能するためには、path環境変数にssh-addssh-agentが必要です。

1
null_pointer

ウィンドウユーザーには、cmd "eval ssh-agent -s"は機能しませんでしたが、git bashを使用すると "eval ssh-agent -s; ssh-add KEY_LOCATION"という扱いになり、Windowsサービス "OpenSSH Key Management"は無効になりませんでした

0
aqm

「あなたの認証エージェントへの接続を開くことができませんでした」というメッセージが出ました。 SSHキーを生成および追加しているときにコマンドを実行すると:ssh-add ~/.ssh/id_rsa。私は自分のマシン上で動いている複数のssh-agentインスタンスを停止し、そして私のwindowsマシン上のコントロールパネルからGitをアンインストールし、そして再びGitをインストールすることによってそれを解決し、そして物事は今働いていた。

0
Devendra Singh

私の場合、私の Comodoファイアウォール はsshエージェントをサンドボックス化していました。サンドボックス化を無効にすると、リポジトリのクローンを作成できました。

参考までに、私はWindows 7でComodoファイアウォールを使用しています。

0
neoramos