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


27

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

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

回答:


26

グラフィカルセッションにログインしている場合はssh-agent、セッションの起動時に起動するように手配します。いくつかのディストリビューションはすでにあなたのためにそれを行います。そうでない場合はssh-agent、セッションスタートアップスクリプトまたはウィンドウマネージャーから実行するように手配します。その方法は、デスクトップ環境とウィンドウマネージャーによって異なります。手動でウィンドウマネージャを起動した場合、単純に呼び出しを置き換えるmy_favorite_wmことによってssh-agent my_favorite_wm

またはssh-agentから開始しないでください。これらのファイルは、新しいインタラクティブシェルごとに実行されるためです。開始する場所は、またはなどのセッションスタートアップファイルです。.bashrc.zshrcssh-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

参考まで$? -ge 2に、ssh-agentにキーがなく、ssh-agentがすでに実行されている場合に終了コード1がチェックされるためです。
ウィスバッキー

7

おそらく、この正確な目的のために設計された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.

本当にこれが好きです!
コリンD

すばらしいです!ありがとうございました。完全に動作します。
誰かが

Githubから圧縮ファイルをダウンロードした後、これはうまく機能します。圧縮されていないkeychain-2.8.5ディレクトリの完全なパスを〜/ .bash_profile export PATH = $ PATHに追加してください:line
Kevin Zhao

4

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

ssh-agent mywindowmanger

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.