ssh-addはssh-agentに接続できません

ssh-addはssh-agentに接続できません

私はそれがssh-add「フロントエンド」であることを知っていますssh-agent

しかし、ssh-agent私のコンピュータではすでに実行されています(で見つけることができますtop)。入力すると、ssh-add「認証プロキシへの接続を開けません」というメッセージが表示されます。

どのように詳細にコミュニケーションをとることができますかssh-addssh-agent

私の状況は

#! /bin/sh

# hello.sh

eval $(ssh-agent -s)
ssh-add

次に、

bash ./hello.sh

私が入力している間

ssh-add some-new-key

ターミナルでは

このエラーメッセージが出力されます。

答え1

出力はいくつかのssh-agent -s環境変数の割り当てです。SSH_AUTH_SOCK=blahblah; export SSH_AUTH_SOCKこれを実行すると、 eval $(ssh-agent -s)シェルはそれをコードとして実行し、これらの変数はシェルに設定されます。ここにある変数には、ssh-addエージェントに接続するために必要な情報が含まれており、シェルからプロセスに継承されますssh-add

しかし、ここではhello.sh。スクリプトを実行するシェルは、で始まる上位レベルの対話型シェルとは別のプロセスであり、変数は「親」に継承hello.shされません。

source hello.sh代わりにを使用するかスクリプトを. hello.sh取得する同じ殻、変数が正しく割り当てられました。

ただし、複数のシェル(複数の端末エミュレータ、SSHセッション、screen / tmuxウィンドウなど)を実行している場合は、実際には1つだけが必要ですssh-agent。変数の割り当てをいくつかのファイルに保存してから.bashrc。しかし、正確に何をしているのかわかりません。

関連情報