(OPの環境は不明であるため、ここに記載されているパスは私のUbuntuマシンで見つかったものです)
gnome-keyringはSSH_AUTH_SOCKをどこに設定しますか?
タイトルの主な質問に答えるために、SSH_AUTH_SOCKは/usr/share/upstart/sessions/gnome-keyring-ssh.conf
、次のコマンドでgnome-keyringに設定されます。
initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK
initctl
マニュアルの引用:
initctl set-env VARIABLE[=VALUE]
ジョブ環境テーブルの変数を追加または更新します。この方法で設定された変数は、ジョブの後続の開始プロセスすべてに適用されます。
-g
、 --global
グローバルジョブ環境テーブルとすべての既存の実行中のジョブ環境テーブルを操作します。
そもそもSSH_AUTH_SOCKはどこから来たのですか?
上記のinitctl
コマンドは、環境変数SSH_AUTH_SOCKがすでに存在していることを条件としています。だから、それは鶏と卵の状況ですか?何がそれを設定しますか?
SSH_AUTH_SOCKは、Xセッションの最初に開始される元のssh-agentによって最初に設定されます。マニュアルの引用:
UNIXドメインソケットが作成され、このソケットの名前がSSH_AUTH_SOCK
環境変数に格納されます。ソケットは、現在のユーザーだけがアクセスできるようになります。
しかし、gnome-keyringのsshコンポーネントは、それ自体を既存のssh-agentに置き換えることです。したがって、SSH_AUTH_SOCKを独自のソケットで上書きする/run/user/.../keyring-.../ssh
ので、アプリケーションはssh-agentではなくそれに通信します。
それを無効にする方法
さて、最後の文「私はそのことを無効にしてほしい」に答えましょう。OPが望んでいるのは、gnome-keyringのsshコンポーネントによるSSH_AUTH_SOCKの上書きを無効にすることです。彼らは、最初にssh-agentによって設定された「真の」SSH_AUTH_SOCK変数を取り戻したいと考えています。
sshコンポーネントは、上記と同じ起動スクリプト(/usr/share/upstart/sessions/gnome-keyring-ssh.conf
)によって起動されますが、1つの条件がX-GNOME-Autostart-enabled=false
あります。これらのファイルのいずれにも文字列が含まれていてはなりません。
- (システム全体の設定)
/etc/xdg/autostart/gnome-keyring-ssh.desktop
- (ユーザー設定)
~/.config/autostart/gnome-keyring-ssh.desktop
したがって、それを無効にしたい場合はX-GNOME-Autostart-enabled=false
、これらのファイルの1つ、できればHOMEディレクトリにあるファイルに行を追加するだけです。