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がログインシェルで始まるかどうかを変更します。
xterm*loginShell: true
または?でまたはを使用してください。xterm*loginShell: false
~/.Xdefaults
~/.xresources
- 実行するか
xterm -ls
(xterm
いいえ-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