私は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 push / pullを行うことができますか?
ここに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
答え1
何が起こるべきかは次のとおりです。
gnomeセッションを開始すると、gnome-keyringデーモン(sshエージェントとしても機能します)の一部が開始され、そのgnomeセッション中に開始されたすべての環境がそのSSHエージェントに接続する方法に関する情報で更新されます。グラフィカルにログインするときに発行されるパスワードは、主キーリングのロックを解除するために使用されます。
gnome-keyringをSSHプロキシとして使用する場合ssh-agent
。
Xセッションが終了すると、gnome-keyringも終了します。しかし、tmuxセッションはまだ存在します。その後、他のgnome-keyringまたはssh-agentを起動しても、すでに起動されているプロセスの環境は、新しいソケットパスでtmux
環境を更新しない限り通信できません。
あなたができることは次のとおりです。
gnome-keyring-daemon -r > ~/.gkr
. ~/.gkr
新しいgnome-keyringを使用したいすべてのシェルでこれを行います。
どのDISPLAY gnome-keyring-daemonに接続しているかを確認してください。
答え2
私が最初に試したことは、そのパッケージapt-get install ssh-askpass-gnome
がインストールされていない場合(または他のAskpassプログラム)、キーのロックを解除する必要があるときにgnomeがパスワードを求めるメッセージを表示しないことです。
DISPLAY
また、変数を正しく設定する必要があります。
$ echo $DISPLAY
:0.0
また、端末をどのように起動しますか?ターミナルセッションを開始した方法から継承されたかどうかは、gnome-session
特定のgno-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-agent
で実行されていることを確認してくださいgnome-session
。
$ pgrep ssh-agent | xargs -l1 pstree -s
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───ssh-agent(27091)
答え3
パスワードで保護されたSSHキーを永久に保存するのに問題があるようです。
次のリソースを確認してください。
答え4
これを.bash_profileに追加する
if [ -n "$SSH_AUTH_SOCK" \
-a "${SSH_AUTH_SOCK::13}" = "/tmp/keyring-" \
-a ! -L "$SSH_AUTH_SOCK" ]
then
OLD_AUTH_SOCK="$SSH_AUTH_SOCK"
eval `ssh-agent`
mv "$OLD_AUTH_SOCK" "$OLD_AUTH_SOCK"~
ln -sfn "$SSH_AUTH_SOCK" "$OLD_AUTH_SOCK"
SSH_AUTH_SOCK="$OLD_AUTH_SOCK"
fi