Ssh-copy-idを使用して、一部のサーバーに自動(パスワードなし)sshログインを設定しました。 ssh-agent
は、それが実行された端末からのみ機能します。すべての端末でssh-add
を使用するにはどうすればよいですか?
当然、パスフレーズなしのSSHキーは好みません。
グラフィカルセッションにログインしている場合は、セッションの開始時に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.
デスクトップ環境またはウィンドウマネージャーに適用します。これまでにカスタム~/.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を開始するコマンドを知っておく必要があります。