後:
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_PID
。SSH_AUTH_SOCK
走るとき
eval `ssh-agent -s`
ssh-agent
値が出力され、シェルはそれを解釈し、コマンドを実行するシェルに設定されます。皮をむく。したがって、新しい端末を起動すると、その端末の新しいシェルにこれらの変数が正しく設定されず、ssh
エージェントが見つかりません。
両方の端末が稼働している場合は、以下を実行できます。
env | grep SSH
エージェントが開始された端末から新しい端末によって与えられた値を設定します。これにより、ssh
2番目の端末でエージェントを見つけることができます。
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