.<name of shell>rc
注:この特定のSSHキーにはパスワードがあり、パスワードを入力し続ける必要がないため、ここに数行を追加しても問題は解決されません。
ssh-agent
だから私はそれが後ろでどのように機能するのか本当に理解していません。私はいくつかのリモートリソースにアクセスするためにキーを追加する必要があるたびにとssh-agent
を使用します。ssh-add ~/.ssh/id_rsa
キーを一度追加したので、同じ「シェルセッション」に対して再度追加する必要はありません(「シェルセッション」はおそらく適切な用語ではありません)。
残念ながら、新しいシェルセッションを作成し続けています。私はOS Xのtmuxでzshを実行しており、創造的な名前のssh keyを持っていますid_rsa
。 SSHキーにはこれに関連するパスワードがあります。
新しいシェルを起動するたびに、次のことを行う必要があります。
$ eval `ssh-agent`
$ ssh-add ~/.ssh/id_rsa
<type password>
これは本当に迷惑なことです。
ssh-agent
環境変数の出力がSSH_AGENT_PID
毎回異なることがわかりました。私の直感は、この環境変数がSSH_AUTH_SOCK
単一のシェルセッション内でキーを再追加する必要がない理由です。プログラムを呼び出すと、ssh
これらの環境変数を使用して通信し、ssh-agent
認証が成功します。
ssh-agent
セッション間でsを共有する方法があるかどうか疑問に思います。おそらく正しい方法は、SSHキーを追加してtmux
起動する前に環境変数を保存するtmux
ように設定することです。本当によくわかりません。この問題を解決する標準的な方法は何ですか?SSH_AUTH_SOCK
SSH_AGENT_PID
ベストアンサー1
ssh-agentがどのように機能するかは、セッションごとに1つのエージェントがあることです。エージェントはセッションを開始して終了します。
セッションは、端末を開いたりシェルを起動したりするのではなく、ログインしたときに開始されます。ssh-agent
これをシェル起動スクリプトの一部として体系的に実行するのは間違いなくエラーです。
私はOSXユーザーではないため、何かが欠けている可能性がありますが、私が理解したのは、古代のOSXバージョン(10.5ベース)では、SSHがOSXキーチェーンと統合されていることです。したがって、ssh-agent
まったく走ってはいけません。このSSH_AUTH_SOCK
変数はlaunchdソケットを指す必要があります(launchdはsshプロキシサービスを提供します)。バラよりSSHキーでMac OS Xキーチェーンを使用するには?そしてsshがSnow Leopardのssh-agentに自分のキーを追加しないようにするにはどうすればよいですか?
何らかの理由でこれに固執し、ssh-agent
すべてのセッションに1つのプロキシを使用したい場合(これは合理的)、SSHソケットに固定パスを使用できます。 (私はWindowsでこれを行いました。)あなたのパスで固定パスを.profile
設定し、まだ実行されていない場合は始めます。SSH_AUTH_SOCK
ssh-agent
export SSH_AUTH_SOCK=~/.ssh/auth_sock
if ! fuser "$SSH_AUTH_SOCK" >/dev/null 2>/dev/null; then
# Nothing has the socket open, it means the agent isn't running
ssh-agent -a "$SSH_AUTH_SOCK" -s >~/.ssh/agent-info
fi
私のコードはプロキシを終了しようとしません。ログアウト時にエージェントを終了するには、ログアウトスクリプトにkillディレクティブを追加します。もちろん、ユーザーとして実行されているすべてのプロセスを終了すると、エージェントも含まれます。