web-dev-qa-db-ja.com

このssh-agentの問題を解決するにはどうすればよいですか?

私はLinux Mintを使用していて、ログイン時にgnome-keyringが自動的にロックを解除できなかったようです。

私の問題の症状は次のとおりです。

$ ssh-add
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

$ git pull
WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-Nmf3J3/pkcs11: No such file or directory

Gitがパスフレーズを入力せずにプッシュ/プルできるようにするにはどうすればよいですか?

Gnome-keyringとssh-agentにはいくつかの点があることに気づきましたが、それを特定することはできませんでした。

セッション中にssh-addを実行すると、SSH/gitのパスフレーズを要求されなくなります。

問題は、各セッション中にssh-addを実行する必要があることです。ログイン時にGnomeのキーリングをロック解除する方法が欠けているはずです。

$ export | grep GNOME          
GNOME_KEYRING_CONTROL=/tmp/keyring-hjMM4V
GNOME_KEYRING_PID=1961

それは最初の編集と同じセッション中に再び起こりました。私はgit pullを実行し、WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-hjMM4V/pkcs11: No such file or directoryを取得しました。

$ env | grep SSH
SSH_AGENT_PID=2116
SSH_AUTH_SOCK=/tmp/ssh-OACxJMBY2038/agent.2038

$ ps -fp $SSH_AGENT_PID
UID        PID  PPID  C STIME TTY          TIME CMD
eoin      2116  2038  0 09:47 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-session-manager
17
eoinoc

私が最初に試すのはapt-get install ssh-askpass-gnomeです。それ以外の場合、そのパッケージ(またはいくつかの代替askpassプログラム)がインストールされていないと、キーをロック解除する必要があるときにgnomeがパスワードを要求できません。

また、DISPLAY変数を適切に設定する必要があります。

$ echo $DISPLAY
:0.0

また、端末をどのように起動しますか?ターミナルセッションの開始方法、およびgnome-sessionから継承するかどうかに問題がある可能性があります。これは、gnon-gnomeプログラムを使用してキーバインディングを設定するときに発生する可能性があります。

gnome-terminalを使用していると仮定すると、pstreeを使用して確認できます。ここでは、正しい継承が行われていることを確認できます。

$ pgrep gnome-terminal | xargs -l1 pstree -s 
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───xmonad-x86_64-l(27139)───gnome-terminal(26036)─┬─bash(26041)
                                                                                                                 ├─gnome-pty-helpe(+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 └─{gnome-terminal}+

これに対して、このセッションではgnome-sessionを継承していません。

$ pgrep gnome-terminal | xargs -l1 pstree -s 
init(1)───sh(25919)───gnome-terminal(25920)─┬─bash(25927)
                                            ├─gnome-pty-helpe(25926)
                                            ├─{gnome-terminal}(25921)
                                            ├─{gnome-terminal}(25924)
                                            └─{gnome-terminal}(25928)

また、ssh-agentgnome-sessionによって開始されていることを確認します。

$ pgrep ssh-agent | xargs -l1 pstree -s
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───ssh-agent(27091)
2
aculich

起こることが意味されているのは:

Gnomeセッションを開始すると、gnome-keyringデーモン(sshエージェントとしても機能します)の一部が開始され、そのgnomeセッション中に開始されたすべての環境が、そのsshエージェントへの連絡方法に関する情報で更新されます。グラフィカルログイン時に発行するパスワードは、デフォルトのキーリングのロックを解除するために使用されます。

Gnome-keyringをssh-agentとして使用する場合、ssh-agentのような別のエージェントを使用する必要はありません。

Xセッションが終了すると、gnome-keyringも終了します。しかし、tmuxセッションは残ります。次に、別のgnome-keyringまたはssh-agentを開始しても、tmuxによってすでに開始されているプロセスの環境は、新しいソケットのパスで環境を更新しない限り、それらと通信できません。 。

あなたができることは:

gnome-keyring-daemon -r > ~/.gkr

新しいgnome-keyringを使用するすべてのシェルで. ~/.gkrを実行します

Gnome-keyring-daemonが接続するDISPLAYに注意してください。

2
1