エージェントが作成されると、親プロセスから自動的に分離されます。
someUser@MyPC:~$ eval "$(ssh-agent -s)"
Agent pid 10222
someUser@MyPC:~$ ps -e --forest | grep ssh-agent
10222 ? 00:00:00 ssh-agent
別のエージェントを作成するために端末を閉じて新しい端末を開くと、2つのエージェントが実行されています。
someUser@MyPC:~$ eval "$(ssh-agent -s)"
Agent pid 10503
someUser@MyPC:~$ ps -e --forest | grep ssh-agent
10222 ? 00:00:00 ssh-agent
10503 ? 00:00:00 ssh-agent
一部の制御端末が閉じられるか終了しない限り、既存のssh-agentに接続できるコマンドはありますか?
答え1
起動すると、2ssh-agent
つの環境変数が提供されます。そのため、エージェントを起動するにはコマンドが必要です。エージェントは変数を設定するためのシェルコマンドを出力し、そのコマンドが現在のシェルセッションで実行されるようにします。SSH_AUTH_SOCK
SSH_AGENT_PID
eval "$(...)"
eval
既存のプロキシに接続するには、SSH_AUTH_SOCK
既存のプロキシのソケットを指すように環境変数を設定します。他の端末がそのファイルをインポートできるように、起動後に変数とその値をファイルに出力します。
たとえば、
eval "$(ssh-agent -s)"
echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > ~/.ssh_auth_sock_info
次に、他の端末からプロキシ接続情報を取得します。
. ~/.ssh_auth_sock_info
繰り返しますが、このSSH_AGENT_PID
変数にはエージェントのPIDが含まれているため、ログアウトスクリプトなどでそれを使用してエージェントを終了できます。
プロキシPIDを知っていてもソケットパスがわからない場合は、それを使用してソケットを見つけることができ、lsof
それを使用するために必要な権限を持っています。たとえば、実行中にsudo lsof -p 10222
最初のSSHエージェントに対して開かれたファイルとソケットが表示されます。通常、ファイル記述子#3はプロキシソケットです。