私はそれがssh-add
「フロントエンド」であることを知っていますssh-agent
。
しかし、ssh-agent
私のコンピュータではすでに実行されています(で見つけることができますtop
)。入力すると、ssh-add
「認証プロキシへの接続を開けません」というメッセージが表示されます。
どのように詳細にコミュニケーションをとることができますかssh-add
?ssh-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
。しかし、正確に何をしているのかわかりません。