`ssh-agent -k`がssh-agent(macOS)を終了しないのはなぜですか?

`ssh-agent -k`がssh-agent(macOS)を終了しないのはなぜですか?

突然発生する短期SSH接続の問題を解決しようとしています。これらの接続は私のMac(MBP、Catalina 10.15.6 zsh)でいくつかのLinuxで行われます。「家電製品」私のネットワークに存在するもの - 特にラズベリーパイclient_loop: send disconnect: Broken pipe接続が終了した後に端末にメッセージを残します。

しかし:関連がある場合にのみ背景として提供されます。私の直接の質問:

ssh-agent -kなぜ殺さないでくださいという命令が出るのでしょうかssh-agent

SSH_AGENT_PID環境変数が設定されていないため失敗したようです。 Mac端末アプリに表示されている内容に基づいて推測します。

1. リストSSH関連プロセス:

% pgrep -f ssh       
2138
75076
75942
75943
75944
% ps 2138     
  PID   TT  STAT      TIME COMMAND
 2138   ??  S      0:00.26 /usr/bin/ssh-agent -l

PID2138はでssh-agent、他のPIDはsshRaspberryまたはUbuntuボックス(すべてLinux)へのアクティブな接続です。

2. ssh-agentIAWを殺すman ssh-agent

からman ssh-agent

ssh-agent [-c | -s] -k
-k現在のエージェントを終了します(SSH_AGENT_PID環境変数で指定)。

% ssh-agent -k 
SSH_AGENT_PID not set, cannot kill agent  
% sudo ssh-agent -k  
SSH_AGENT_PID not set, cannot kill agent

% echo $SSH_AGENT_PID

% 

または をssh-agent使って殺すことができるのでkill 2138pkill ssh-agent〜らしいたぶん答えはAppleのバージョンはssh-agent環境変数を提供しません。SSH_AGENT_PID。しかし、これが答えならば、別の質問が提起されます。環境変数を割り当てない妥当な理由はありますかSSH_AGENT_PID

また参考にしてください関連質問。しかし、この質問のOPは、彼のSSHクライアントホストがmacOSであることを示していません。SSH_AGENT_PIDまだ決まっていないが、どのようにssh-agent始めるべきか悩んでいるようだ」と話した。私の場合(macOS)は、ssh-agentSSH接続の開始時に開始されます。 「類似の質問」提案ボックスで別のQ&Aを見つけました。そのうちのいくつかを読んでみましたが、それらのどれも私と同じようではありません。

答え1

バラよりこの回答

~からman ページ:

ssh-agentが起動すると、環境変数を設定するために必要なシェルコマンドが出力されます。これは呼び出しシェルで評価できます。eval `ssh-agent -s`

だからssh-agentただ実行プログラム環境変数を設定するコマンドは実際にはありません。セットeval.

答え2

Ubuntu 18.04でも同じ問題が発生しました。 Get IDを使用した後、pidof ssh-agent私は私に効果的でした:

export SSH_AGENT_PID=<pid>
eval `ssh-agent -k`

関連情報