すでに実行されている ssh-agent プロセスの使用

すでに実行されている ssh-agent プロセスの使用

tty2にbashセッションがあり、ssh-agent以前のセッションで私に属していたプロセス(同じユーザーID)があります(TTY = ?)。

tty2では、次のようにssh-add言います。 Could not open a connection to your authentication agent.

eval $(ssh-agent)すでに実行中のプロセスがあっても、ログインするたびにプロセスを開始する必要がありますかssh-agent?しかし、最終的にはssh-agent多くのプロセスインスタンスが実行されます。 :-(

編集:すでに実行されているプロセスを使用したいですssh-agent

次のように、すでに実行中のアイテムに連絡する方法を見つけましたssh-agent

export SSH_AUTH_SOCK=$(find /tmp/ssh-*/ -user $USER -type s -name "agent.*" 2>/dev/null | head -1)
export SSH_AGENT_PID=$(echo $SSH_AUTH_SOCK | cut -d. -f2)

しかし、これが非常に安全かどうかはわかりません。

編集2:このコマンドを実行するたびに、コマンドはeval $(ssh-agent)プロセスの新しいインスタンスを起動します。ssh-agent

答え1

ssh-agent 出力を同時に評価して保存できます。

eval $(ssh-agent | tee agent.env)

その後、他の端末またはその後のセッションで

source agent.env

よりセキュリティを強化するために権限を強化します。

chmod go-rwx agent.env

答え2

まず、SSHセッションでこれを行っていますか?その場合は、ssh-agentを有効または無効にすることができます。このオプションは、ホストのSSHエージェントをリモートサーバーに転送します。これにより、SSHキーをリモートサーバーにコピーする必要さえありません。ssh -A [email protected]-A

元の質問に戻って:これを実行する際の問題は、ssh-agent基本的に毎回異なるランダムなソケット名を使用することです。あなたが望むのは、ssh-agent -a固定コンセントを提供するオプションを使用することです。その後、数回呼び出しても他のssh-agentは起動しません。

これは常に同じssh-agentを再利用するか、ssh-agentが実行されていない場合に起動する単純なスクリプトです。また、この3行を1行のエイリアスに簡単に組み合わせることもできます。

# set SSH_AUTH_SOCK env var to a fixed value
export SSH_AUTH_SOCK=~/.ssh/ssh-agent.sock

# test whether $SSH_AUTH_SOCK is valid
ssh-add -l 2>/dev/null >/dev/null

# if not valid, then start ssh-agent using $SSH_AUTH_SOCK
[ $? -ge 2 ] && ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null

源泉

関連情報