XTERMとGnome-keyringを一緒に使用できますか?

XTERMとGnome-keyringを一緒に使用できますか?

SSHに接続するときGNOME端末アプリケーションでgnome-keyringダイアログボックスが開き、セッションごとに一度だけパスワードを入力し、パスワードを要求せずに同じSSHに複数回再接続できます。

しかし、これはxtermでは動作しません。誰かがこれを行うのを助けることができますか?

答え1

Gnomeセッションでもxtermを実行していますか?

Gnome端末で次のことを試してみてください。

echo $SSH_AUTH_SOCK

その後、xtermで同じことを試してください。

次のように印刷する必要があります

/tmp/keyring-abc123/ssh

同時に。

私はxtermでそのようなものを印刷しないと思います。

空であれば何かそれを消しているのです(または設定していないものです)。

もっと似ていたら

/tmp/ssh-defgh67890/agent

その後、どこかでssh-agentを実行していますが、これは混乱する可能性があります。

私が試す方法は次のとおりです。

両方を実行してくださいecho $0。 1つは-最初から持ち、もう1つはそうではありませんか?

その場合、ログインシェルではssh-agentを実行している可能性がありますが、ログインしていないシェルでは実行されていない可能性があります。あなたの~/.bashrcまたは同等のスクリプトを確認し、~/.bash_profile問題を解決してください。

または、xtermがログインシェルで始まるかどうかを変更します。

  1. xterm*loginShell: trueまたは?でまたはを使用してください。xterm*loginShell: false~/.Xdefaults~/.xresources
  2. 実行するかxterm -lsxtermいいえ-ls

プロファイル設定 - >タイトルとコマンド - >ログインシェルを使用してコマンド実行からGnome端末設定をコピーします。

失敗した場合は、echo開始ファイルにステートメントを追加してみてください。echo $SSH_AUTH_SOCK >> ~/ssh-debug.log出力をログファイルにリダイレクトするには、同様の方法を使用する必要があります。

その後、ログアウトしてもう一度ログインしてください~/ssh-debug.log

その後、Gnome Terminalを実行してもう一度確認してください。

その後、xtermを実行してもう一度確認してください。

違いを見つけてください。

/etc/pam.d/gdmとシステム->基本設定->アプリケーションの起動を確認してください。 /etc/pam.dに他のssh-agent設定はありますか?

/etc/X11/Xsessionそれが呼び出すスクリプトを見てください。

答え2

提供された解決策を確認することもできます。Red Hat Bugzilla - バグ 713955 - SSH_AUTH_SOCK 環境変数がキーボードショートカットで起動された端末に存在しません。これを次の項目に追加するだけです~/.bashrc

#GPG and SSH agent not exported when running terminal by shortcut
if [ -z "$GPG_AGENT_INFO" -a -z "$SSH_AUTH_SOCK" -a -n "$GNOME_KEYRING_CONTROL" ] ; then
        #derive GPG and SSH agent info from GNOME_KEYRING_CONTROL
        export GPG_AGENT_INFO="$GNOME_KEYRING_CONTROL/gpg:0:1"
        export SSH_AUTH_SOCK="$GNOME_KEYRING_CONTROL/ssh"
fi

私の場合(gnome 2.28を含むCentos 6)GNOME_KEYRING_CONTROL変数は存在しませんが(GNOME_KEYRING_SOCKET存在する)、gnomeキーリング「seahorse」はGPG_AGENT_INFOを提供しないようです。

だから私はこのバージョンで終わりました(また配置されました~/.bashrc)。

set_keyring_agent() {
# SSH agent not exported when running terminal by shortcut
# see https://bugzilla.redhat.com/show_bug.cgi?id=713955#c4
# and http://unix.stackexchange.com/questions/11355/its-possible-to-make-xterm-and-gnome-keyring-work-together
if [[ -n "${GNOME_KEYRING_SOCKET}" && -z "${SSH_AUTH_SOCK}" ]] ; then
  #derive SSH agent info from GNOME_KEYRING_SOCKET
  local ssh_auth_socket="${GNOME_KEYRING_SOCKET}.ssh"
  if [[ -S "${ssh_auth_socket}" ]] ; then
    export SSH_AUTH_SOCK="${ssh_auth_socket}"
  fi
fi
}

set_keyring_agent

答え3

gnome-terminalがgnome-keyring-daemonから正しいSSH_AUTH_SOCKを取得できるようにする魔法は何であるかわかりませんが、XTerm(または他の端末)で正しい値を設定する解決策を見つけました。 .bashrcに以下を追加します。

SSH_AUTH_SOCK=`netstat -xl | grep -o '/tmp/keyring-.*/ssh$'`
[ -z "$SSH_AUTH_SOCK" ] || export SSH_AUTH_SOCK

それが何をするか: "/tmp/keyring-*/ssh" パターンと一致する名前を持つローカルリスニングソケットを探し、SSH_AUTH_SOCK 値が存在する場合はその値に設定します。

源泉:http://ubuntuforums.org/showthread.php?p=10786874#post10786874

関連情報