web-dev-qa-db-ja.com

すべての端末でssh-agentを機能させるにはどうすればよいですか?

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

当然、パスフレーズなしのSSHキーは好みません。

33
Gowtham

グラフィカルセッションにログインしている場合は、セッションの開始時にssh-agentを開始するように準備します。いくつかのディストリビューションはすでにあなたのためにそれをしています。そうでない場合は、セッション起動スクリプトまたはウィンドウマネージャーからssh-agentを実行するように手配してください。これを行う方法は、デスクトップ環境とウィンドウマネージャーによって異なります。たとえば、ウィンドウマネージャーを手動で起動する場合は、my_favorite_wmの呼び出しを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

たぶん Keychain のようなプログラムが必要です。これはまさにこの目的のために設計されたものです。 manページから:

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.
7
snapshoe

デスクトップ環境またはウィンドウマネージャーに適用します。これまでにカスタム~/.Xclientsを使用して手動でこれを行った場合、これを最後の行として使用しました:

ssh-agent mywindowmanger

これには独自の設定オプションがあるDEがあるかもしれませんが、KDEにはないようです(例:)。現在、鉱山は/etc/X11/xinit/xinitrc-common(おそらくFedoraによって行われたもの)からのコードを介して実行されたようです。DE/ WMに関係なくすべてのユーザーに対してアクティブであり、親プロセスコマンドは$HOME/.Xclientsですが、ファイルはssh-agentを参照しません(/etc/X11/xinit/xinitrc-commonは参照します)。

~/.Xclientsがない場合は、その1行だけで作成できますが、DE/WMを開始するコマンドを知っておく必要があります。

4
goldilocks