gnome-keyringはどこに$ SSH_AUTH_SOCKを設定しますか?


10

私はgnome-keyring、SSHエージェントとして処分する過程にあります。

私がしたこと

  • 何時間もインターネットを検索しました。
  • 頻繁に変更され、再起動されました。
  • 最後にrm、SSHに関連するすべての自動起動の項目を編集しました。

エージェントのソケットがなくなったので、最後のことは魔法のように機能しました。

/run/user/[uid]/keyring/ssh

問題

残りの問題は、ということであるにもかかわらず、私の素晴らしい上記の結果、得られる何かgnome-keyringまだ設定を主張SSH_AUTH_SOCK、今 存在しない上記のソケットを。それはゾンビのようなもので、これらは決して死ぬことはありません。

質問

その変数を設定することは何ですか?それはどこで行われますか?

落とし穴

  • その変数を別の値にリセットする方法を尋ねているのではありません
  • システム全体またはシェル構成ファイルでその値を設定する方法を尋ねているのではありません
  • 私は、何かをフリーズ、設定、リセット、設定解除、または置き換えるために、いくつかのinit-scriptブードゥー教の呪文を要求していません
  • モノをアンインストールする方法についてアドバイスを求めているのではありません。パスワードにも必要です。Gnomeで最も統合され、洗練されたパスワードマネージャーのようです。

私はそれがあるべきであるようにそれを無効にしたいです。


2
gnome-keyringをアンインストールしますか?
rudimeier

1
@rudimeier:私のパスワードには引き続きgnome-keyringが必要です。私が知る限り、Gnomeにはこれ以上洗練され統合されたものはありません。
JohnW 2016年

@rudimeierでもそれは役に立たないようです。私はそれを試しました。
アンドレ・Borie

回答:


8

推測させてください-あなたはウェイランドを使っています。今日、この問題に遭遇し、解決策を共有したいと思いました。

Gnome-Sessionには、SSH_AUTH_SOCK何らかの理由で、ウェイランドの下にハードコードされたオーバーライドがあります。次のコミットを参照してください:https : //github.com/GNOME/gnome-session/commit/a8896ccad65583885735a04205351f48a42f29ae

回避策は?この動作を無効にする環境変数を設定しますGSM_SKIP_SSH_AGENT_WORKAROUND=1。環境設定コードを短絡します。

これを見つけてssh-agentを設定しようとしている人のために:ssh-agentのsystemdユニットファイルには、次の行があります。

ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"

完全なファイルは次のようになります。

[Unit]
Description=SSH Agent
IgnoreOnIsolate=true

[Service]
Type=forking
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK
ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"

[Install]
WantedBy=default.target

ありがとう!Ubuntu v17.10 Artful Aardvarkではexport GSM_SKIP_SSH_AGENT_WORKAROUND=1、〜/ .profileに追加して再起動するだけで、以前はv17.04で機能していた私の設定が修正されました。
Stephen Niedzielski 2017年

これはWaylandだけでなく、gnome-flashback + i3を使用しようとしたときに問題になっているようです。
dragon788

そのハックはGnome 3.24以前(wiki.archlinux.org/index.php/GNOME/…)まで機能することに注意してください
Pablo Olmos de Aguilera C.

5

(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ディレクトリにあるファイルに行を追加するだけです。


私はGnomeキーリングの自動開始エントリを無効にしてみましたが、変数はまだそこにあるようですが、存在しないソケットを指しています(キーリングを無効にすると機能しましたが、変数は別の場所に設定されています)。私はArchlinuxマシンを実行しているので、アップスタートはなく、変数を設定するsystemdには明らかなものはありません。
AndréBorie

@AndréBorieArchもsystemdも知りません。ソケットパスの新しい値は何ですか?私のmacihneでは、ssh-agentは通常、に設定し/tmp/ssh-XXX/agent.PIDます。ssh-agentはまだプロセスリストにありますか?
xhienne

パスは、元の質問と同じです。SSHエージェントもキーリングも実行されていません。
アンドレ・Borie

この答えは本当に古いですが、unix.stackexchange.com
questions /

3

https://wiki.archlinux.org/index.php/GNOME/Keyring#Disable_keyring_daemon_components

別のSSHエージェント(ssh-agentやgpg-agentなど)を実行したい場合は、GNOME Keyringのsshコンポーネントを無効にする必要があります。

mkdir ~/.config/autostart
cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/ &&
echo 'Hidden=true' >> ~/.config/autostart/gnome-keyring-ssh.desktop

次にログアウトします。

軽く編集され、明らかに役に立たない使用の削除 printf


これはUbuntu 14.04でも動作します。
2018年

これは3.24以降に当てはまります。
パブロオルモスデアギレラC.

0

Gnome 3.18以降、ソケットは次の場所に格納されているようです ~/.cache/keyring-(some random string)/ssh

おそらく、それはgnome-keyring-daemonによって設定されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.