だれが私のssh-agentを起動しており、なぜそれが正しく終了しないのですか?
これは長い間抱えていた問題ですが、何かを見つけようとするたびに迷子になるので、経験豊富な人がどこで助けてくれるのか、ここで尋ねたほうがいいと思いました。 バックグラウンド 私のRaspberry PiはRaspbian Jessieを実行しており、SSHを使用してログインし、リモートでコマンドを実行します。最初のSSHセッション中に、ログインするたびにRPiでssh-agentプロセスが生成されるのに気づきましたが、ログイン時に強制終了されることはありませんでした。exitログインとログアウトを数回ssh-agent繰り返すと、何もせずにハングしたままにして一連のプロセスが生成されました。manページとあちこちで答えをいじくり回して読んだところ、最近の目的がわかりました。ssh-agentまた、ログアウトすると通常は強制終了されるので、なぜそうでないのかを自問し始めました。さらに、発行source ~/.bashrcによっての別のインスタンスssh-agentが生成されることに気付きました。相対マニュアルページで読んだ環境変数SSH_AGENT_PIDを定義する必要があるのは、ssh-agentプログラムを内でeval起動して出力を実行し、そのような変数を定義する必要があるためです。これらの変数は、ssh-agent -k(現在のセッションに関連するエージェントを強制終了する)など、他のSSH関連コマンドで使用されます。とを実行echo $SSH_AGENT_PIDしましたがecho $SSH_AUTH_SOCK、どちらも空でした。突然気づきました。おそらくssh-agent -k設定されていない環境変数からPIDを読み取ろうとするため、ログアウト時にプロセスが強制終了されません。 問題 以来は、ssh-agentログアウト時に殺されていない、これは確かに必要な環境変数が設定されていないので、それができるだけで平均1の事が起こる:呼び出し、誰でもssh-agentログイン時に、おそらく適切な方法でそれをしない(されるであろうeval "$(ssh-agent -s)")。だから私は思った:まあ、問題は何ですか?エージェントを起動して手動で修正するために実行される構成ファイル、サービス、またはログインスクリプトを見つけるだけです!一体どこにあるのでしょうか? 私が試したこと ssh-agentを呼び出すたびにが生成されることに気付いたのでsource ~/.bashrc、これは最初に検査したファイルですが、SSHに関連するものをリモートで参照するものはありません。次のすべてのファイル内で文字列を検索し続けましたが、何も見つかりませんでしたvissh。 ~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile /etc/profile.d/ (every file in this folder) /etc/environment 関与する可能性のあるファイルが他にありますsource ~/.bashrcか?よくわかりません。 次に、関連するsystemdサービスを検索しましssh.serviceたがWantedBy=multi-user.target、見つかったのはであり、ログイン時に実行されていません(これはSSHサーバーデーモンであるため、これは明らかです)。 また、/home/piフォルダ内のすべてのファイルを一時フォルダに移動してログアウトしてから再度ログインしようとしssh-agentましたが、まだ起動しました。 結局、私はチャンバーで最後に撃ったショットも発射しました:find / -name 'ssh-agent'rootとして/usr/bin/ssh-agent実行し、実行可能ファイルのみを出力したので、基本的には親コマンドのみをログに記録する偽の実行可能ファイルを作成しました: #! /bin/bash ps -o args= $PPID > /home/pi/LOG cat /proc/$PPID/cmdline >> /home/pi/LOG 私は本当の名前を変更し/usr/bin/ssh-agent、適切な権限/ユーザー/グループを設定する偽の1つに置き換え、source ~/.bashrc再度実行して、LOGファイルを印刷しました。 …