すべての端末でssh-agentを操作する方法は?

すべての端末でssh-agentを操作する方法は?

ssh-copy-idを使用して、一部のサーバーの自動(パスワードなし)SSHログインを設定しました。ssh-agent実行している端末でのみ実行できます。ssh-add私のすべての端末でこの機能を動作させるにはどうすればよいですか?

もちろん、私はパスワードのないSSHキーが好きではありません。

答え1

グラフィックセッションにログインしている場合は、ssh-agentセッションの開始時に開始するようにスケジュールしてください。一部のディストリビューションはすでにこれを行います。ない場合は、ssh-agentセッション開始スクリプトまたはウィンドウマネージャで実行するようにスケジュールしてください。これを行う方法は、デスクトップ環境とウィンドウマネージャによって異なります。たとえば、ウィンドウマネージャを手動で起動する場合は、呼び出しをmy_favorite_wmbyに置き換えることができますssh-agent my_favorite_wm

このファイルはすべての新しい対話型シェルで実行されるため、起動しないssh-agentでください.bashrc.zshrc開始する場所は、ssh-agentなどのセッション開始ファイルです。.profile.xsession

すべてのプロセスで同じ SSH エージェントを使用するには、どこにログインしても、ランダムに名前付きソケットを使用するのではなく、常に同じソケット名を使用するように作成できます。たとえば、次のように入力できます~/.profile

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
  ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi

答え2

次のプログラムが必要な場合もあります。キーホルダー、この目的のために正確に設計されています。マニュアルページから:

DESCRIPTION
   keychain is a manager for ssh-agent, typically run from ~/.bash_profile.
   It allows your shells and cron jobs to share a single ssh-agent process.

答え3

デスクトップ環境やウィンドウマネージャに適用してみてください。過去にcustomを使用してこの操作を手動で実行したとき、次の行を~/.Xclients最後の行として使用しました。

ssh-agent mywindowmanger

独自の設定オプションを持ついくつかのDEがあるかもしれませんが、私の考えでは(例えば)KDEにはありません。現在、私のコードは/etc/X11/xinit/xinitrc-commonDE / WMに関係なくすべてのユーザーに対して有効になっているため、コードで実行されているようです(おそらくfedoraによって実行されます)。親プロセスコマンドはですが、ファイル$HOME/.Xclientsは参照されませんssh-agent/etc/X11/xinit/xinitrc-common)。

存在しない場合は、~/.Xclientsこの行のみを使用して作成できますが、DE/WM を起動するにはコマンドを知る必要があります。

関連情報