ssh-addからの苦情:認証エージェントへの接続を開けませんでした


151

ssh-addRaspbianを実行しているRaspberryPiで作業しようとしています。

起動ssh-agentすると、次の出力が端末に出力されます:

SSH_AUTH_SOCK=/tmp/ssh-06TcpPflMg58/agent.2806; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2807; export SSH_AGENT_PID;
echo Agent pid 2807;

実行すると、実行されているps aux | grep sshことがわかります。

次にssh-add、キーパスフレーズを追加するために実行しようとすると、次のメッセージが表示されます。

Could not open a connection to your authentication agent.

何か案は?


6
試してみてくださいeval $(ssh-agent)
ウルリッヒ・ダンゲル

回答:


224

シェルは、シェルコード出力を評価するためのものssh-agentです。代わりにこれを実行してください:

eval "$(ssh-agent)"

または、すでにssh-agentを起動している場合は、シェルプロンプトにコピーして貼り付けます(Bourneのようなシェルを実行していると仮定)。

sshコマンドはssh-agent、と通信する方法を知る必要があり、SSH_AUTH_SOCK環境変数からそれを知っています。


おかげで、私はそれがどのように機能するかをよく理解できませんでした。それは大歓迎です。
ダニエルグローブズ

2
または、ssh-agent bashを入力して、ssh-addが機能した後に
RaduM

@ Stephane、ssh-agentコマンドが実行結果を出力するだけで、evalバージョンが実際にコマンドを実行するのは正しくありますか?
Sを拒否します。

5
@DenysS。いいえ、セットアップを行い、シェルに環境を更新して連絡できるようにする方法を伝えます。それ自体ではできません。更新された環境で新しいシェルを起動できます(ssh-agent bashそうです)が、外部コマンドを実行している別のプロセス(既に実行中のシェル)のメモリを更新することはできません。
ステファンシャゼル

@ StephaneChazelas、ssh-agentがブート時に開始されたが、シェルでまだ評価する必要がある場合、すべてのシェルに対して自動的に評価されず、rootユーザーが何らかの方法で構成する必要があるということですか?
Sを拒否します。

27

これを試してください:

$ ssh-agent /bin/sh
$ ssh-add $yourkey

5
これは実際に私にとってはうまくいきました。
ジョセフ雪14年

2
フィッシュシェルを使用している場合、この答えは機能します。ssh-agent /usr/bin/fish
-slackmart

1
エラーが表示されます:「認証エージェントへの接続を開けませんでした。
IgorGanapolsky

@slackmart BSDにfishをインストールした場合、その場所は/usr/local/bin/fish(または/usr/ports/shells/fish)です。whereisコマンドを理解してくれてありがとう。
cjm

すばらしい@cjm、私はSlackware Linuxを使用しています。それが私にとって有効な方法です。
slackmart


6

cshをシェル(FreeBSD PI)として使用している場合、これは機能します:

eval `ssh-agent -c`

次に、次のようなことをするだけです。

ssh-add ~/.ssh/id_rsa

エラーが表示されます:「認証エージェントへの接続を開けませんでした。
IgorGanapolsky

2

次の構文も使用できます。

ssh-agent sh -c 'ssh-add && echo Do some stuff here.'

これは私にとってはうまくいきません。あなたが行けssh-agent sh -c "ssh-add -l"ば、あなたはアイデンティティがないとあなたに告げます。
アインTohvri

たとえば、最初に追加する必要があるため、次のssh-agent sh -c "ssh-add && ssh-add -l"ようになります。
ケノーブ

1

これを試してください:に移動しC:\$Installation_Folder$\Git\cmd て実行します:

start-ssh-agent 

cmdコマンドを開きssh-agent、正しい方法で実行します。

ssh-add ~/.ssh/id_rsa その後、動作するはずです。


bash:start-ssh-agent:コマンドが見つかりません
-IgorGanapolsky

1

これは混乱を招き、ユーザーがLinuxとWindowsのどちらでsshキーを追加しようとしているかに応じて、2つの良い答えがあります(私もそうです)。これはおそらくOPに答えませんが、git-bashの拡張です。開発用にWindowsとUbuntuの両方を実行していますが、gitのインストールはそれぞれわずかに異なります。

これを試してください:C:\ $ Installation_Folder $ \ Git \ cmdに移動して実行します:

start-ssh-agent cmdコマンドを開き、正しい方法でssh-agentを実行します。

...が良いのWindowsの答えだったが、あなたはGitのインストールフォルダを見つけるために、Windowsエクスプローラを通過すると予想されたことを指定して、Windowsシェルは、ステップ1の終了時に開いてしまうの実行に失敗した
「Cに移動:\ $インストールフォルダ$ \ Git \ cmd "

ステップ2:ダブルクリックするだけです

start-ssh-agent

ステップ3で、git-bashまたは実行中の* nix端末エミュレーターに戻り、ssh-addを実行します。ssh公開鍵にデフォルト名を使用した場合、ssh-addが自動的に使用するため、名前を追加する必要はありません。


1

sudoでIDを使用する場合、いくつかの方法がありますsudo npm install

長い道のりですが、rootアクセスもできるのでsudo、たくさん使う必要はありません。


  1. sudo ssh-agent bash
    これを実行するとパスワードが要求され、その後ssh-agentスーパーユーザーの権限で実行されます。
  2. ユーザーの.sshフォルダーに移動します
    cd /home/user/.ssh
  3. そこから実行できます

    ssh-add id_rsa
    npm install git+ssh://git@YOUR-PROJECT-URL -g && npm link PROJECT-NAME
    

短い方法、ユーザーのみ(たくさんsudoをしたい場合を除く)

eval "$(ssh-agent)"
ssh-add
sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" npm install git+ssh://git@PROJECT-URL -g && sudo npm link PROJECT-NAME

exportそしてeval仕事ばかりだけでなく、根提供rootのログインシェルは、Bourneは次のようです。rootのシェルがcshまたはtcshの場合には、使用eval `ssh-agent -c`
ステファンChazelas

あなたも与えることができることに注意してくださいroot行って、あなたのssh-agentへのアクセスをsudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" npm install...
ステファンChazelasを

両方を試してみましたが、bashは再びシェルになり、どちらも正常に動作しませんでした。rootを含む私のdebian jessieインスタンスのすべてのユーザーは、デフォルトでbashを使用するように設定されています。
ベルダンドゥ

何をしようとしましたか?eval "$(ssh-agent)"ルートとして実行されているbashシェルのプロンプトで動作します。sshSSH_AUTH_SOCK env varを継承するように、明らかにそのシェルまたはその子孫から実行する必要があります。デフォルトではSSH_AUTH_SOCK環境変数を渡さないeval "$(sudo ssh-agent)"; sudo ssh...ためsudo、動作しません。
ステファンシャゼル

eval "$(ssh-agent)"何らかの構成エラーがあるかどうかを確認するために、後で調べてみました。私がこのガイドを与えた現在の方法では、すでにルートになってからどのユーザーになりたいかを自由に制御でき、サーバー上のすべてのユーザーid_rsa thatsにアクセスできます。だから私はそれが適切に機能するようになったら、私の答えを編集します
Belldandu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.