あまりにも多くのプロセスを生成せずにパスワードを使用した ssh-agent

StackOverflow https://stackoverflow.com/questions/102382

  •  01-07-2019
  •  | 
  •  

質問

Linux 上でパスワードで保護されたキーを持つ ssh-agent を使用しています。特定のマシンにログインするたびに、次のことを実行します。

eval `ssh-agent` && ssh-add

これでも十分に機能しますが、ログインしてこれを行うたびに、別の ssh-agent を作成することになります。たまには、やってみます killall ssh-agent それらを刈り取るために。異なるセッション間で同じ ssh-agent プロセスを再利用する簡単な方法はありますか?

役に立ちましたか?

解決

キーチェーンを見てください。それはあなたと同じような状況にある人々によって書かれていました。キーホルダー

他のヒント

このマシンをどの程度制御できますか?1 つの答えは、ssh-agent をデーモン プロセスとして実行することです。他のオプションについては、 このウェブページ, 、基本的に、エージェントが存在するかどうかをテストし、存在しない場合は実行します。

ここでアイデアの 1 つを再現するには:

SSH_ENV="$HOME/.ssh/environment"

function start_agent {
     echo "Initialising new SSH agent..."
     /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
     echo succeeded
     chmod 600 "${SSH_ENV}"
     . "${SSH_ENV}" > /dev/null
     /usr/bin/ssh-add;
}

# Source SSH settings, if applicable

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     #ps ${SSH_AGENT_PID} doesn’t work under cywgin
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
         start_agent;
     }
else
     start_agent;
fi 

できるよ:

ssh-agent $SHELL

これにより、シェルが終了するときに ssh-agent も終了します。これらは依然としてセッション間で共有されませんが、少なくとも共有すると消えます。

使用するシェルに応じて、ログイン シェルと単なる通常の新しいシェルに異なるプロファイルを設定できます。一般に、すべてのサブシェルではなく、ログイン シェルに対して ssh-agent を起動する必要があります。bash では、これらのファイルは次のようになります .bashrc そして .bash_login, 、 例えば。

最近のほとんどのデスクトップ Linux では ssh-agent が実行されます。ssh-add でキーを追加し、次のコマンドを実行してキーをリモート ssh セッションに転送するだけです。

ssh -A
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top