新しいgnome端末を開くと、ssh-addが忘れられます

新しいgnome端末を開くと、ssh-addが忘れられます

後:

eval `ssh-agent -s`
ssh-add

パスワードを必要とせずにSSH経由で「サーバー」にログインできます。

質問:ただし、新しい gnome ターミナルを開くと、この操作をやり直す必要があります。なぜですか?

GNOMEでRHEL Desktop 6.6を使用する。

アップデート#1: 興味深いことに、他のRHELデスクトップはssh-agentを実行せず、起動するたびに「ssh-add」だけが必要です。ただし、「無効なデスクトップ」で「ssh-add」を実行すると、「認証プロキシへの接続を開けません」というエラーメッセージのみが表示されます。

アップデート#2:再起動後にSSH_AUTH_SOCKがありません。それは問題でしょうか? :

[user@notebook ~]$ env | grep SSH
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
[user@notebook ~]$ 

答え1

ssh-add複数の環境変数を参照して、通信するSSHエージェントをssh見つけますSSH_AGENT_PIDSSH_AUTH_SOCK走るとき

eval `ssh-agent -s`

ssh-agent値が出力され、シェルはそれを解釈し、コマンドを実行するシェルに設定されます。皮をむく。したがって、新しい端末を起動すると、その端末の新しいシェルにこれらの変数が正しく設定されず、sshエージェントが見つかりません。

両方の端末が稼働している場合は、以下を実行できます。

env | grep SSH

エージェントが開始された端末から新しい端末によって与えられた値を設定します。これにより、ssh2番目の端末でエージェントを見つけることができます。

gnome-keyringしかし、より良い解決策は、RHEL Desktopでどのように設定されているのかわかりませんが、事前にエージェントを起動せずにssh-add簡単に実行できるように、GNOMEでSSHエージェント統合を使用することです。

これGNOMEキーリングSSH特に文書が役に立つかもしれません。起動アプリケーション(GNOME属性から)でSSHキーエージェントが有効になっていることを確認することをお勧めします。

答え2

ssh-agent -s以下のように設定するいくつかの環境変数を返します。

SSH_AUTH_SOCK=/tmp/ssh-OIohiYiJShSO/agent.11139; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11140; export SSH_AGENT_PID;

シェルから開始されたプロセスにつながりますが、プロセスには適用されません。いいえそのシェルから起動します。デスクトップまたはメニューで新しいgnome端末を開くと、そのシェルを介して実行されないため、環境変数は取得されません。

exec `ssh-agent -s`たとえば、と入力して実行中のシェルから新しいターミナルを起動すると、gnome-terminal &シェル変数が継承されて動作します。または、ssh-agent次のコマンドを使用して呼び出すこともできます。

ssh-agent gnome-terminal &

次にコマンドを実行し、必要な環境変数を設定します。

答え3

"env | grep SSH"が無効な場合(SSH_AUTH_SOCKが見つからない場合):

vi~/.bashrc

SSH_AUTH_SOCK=`env | grep GNOME_KEYRING_SOCKET | cut -d= -f2 | sed 's/$/.ssh/g'`
[ -z "$SSH_AUTH_SOCK" ] || export SSH_AUTH_SOCK

関連情報