コマンドラインでssh-add
を実行すると、システム上でsshキーが正しくロック解除されなくなりました(Ubuntu 11.10 with Unity)。 ssh-addを実行した後でも、サーバーにsshすると、ダイアログボックスが表示され、sshキーのパスフレーズを尋ねられます。その後、物事は期待どおりに機能します。
ssh-agent
が実行されています。最初にログインしたとき:
$ ps -ef | grep ssh-agent
mish 1853 1818 0 18:55 ? 00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/gnome-session --session=ubuntu
サーバーにsshしなくてもsshキーを適切にロック解除するにはどうすればよいですか? (手動でsshキーダイアログウィンドウをトリガーしても解決策としては問題ありませんが、その方法はわかりません)。
私の使用例は、 tmuxinator を使用し、複数のssh接続をセットアップすることです。だから私はsshキーのロックを解除したい。そうしないと、すべてのsshキーダイアログボックスがすべてポップアップし、パスフレーズを複数回入力する必要があります。または、tmuxinatorを起動する前にどこかでsshできますが、ここでは接続が遅いため、摩擦が増えます。そこで、最初にどこかでsshすることなく、tmuxinatorを起動する前にsshキーのロックを解除したいと思います。
ログアウトしてから再度ログインしてみました。それから私はやった:
$ env | grep -i ssh
SSH_AGENT_PID=8693
SSH_AUTH_SOCK=/tmp/keyring-Ho4cfE/ssh
$ ssh-add -D
All identities removed.
$ ssh-add -l
1024 b8:12:34:56[...]:19 name@computer (DSA)
$ ssh-add
Enter passphrase for /home/name/.ssh/id_dsa:
Identity added: /home/name/.ssh/id_dsa (/home/mish/.ssh/id_dsa)
$ ssh-add -l
1024 b8:12:34:56[...]:19 /home/name/.ssh/id_dsa (DSA)
1024 b8:12:34:56[...]:19 name@computer (DSA)
0 mish@mishtop:~$ ssh server
その時点で、GUIダイアログボックスでパスフレーズを再度求められます。イライラする...
「すべてのIDが削除された」後、ssh-add -l
がまだIDを表示していることも興味深いです。それは私を混乱させます。また、実行中のssh-agentは1つだけのようです。
ランチパッドでこれに関するバグを見つけました: https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/841672
しかし、この質問は、なぜ機能しなかったのかを尋ねるのではなく、回避策を見つけることに関するものだったので、この質問が耐えられることを願っています。
/etc/ssh/ssh_config
で異常なことはありません-触れたことはありません。私は~/.ssh/config
を持っていますが、それは単なるポートとユーザー名です。
ダイアログがポップアップしたときにどのプロセスが実行されているかを見て、それは/usr/lib/gnome-keyring/gnome-keyring-Prompt-3
であり、/usr/bin/gnome-keyring-daemon --daemonize --login
によって起動されました。端末からプロンプトを起動しようとしましたが、何も起こりませんでした。まだ立ち往生しています。
上記の質問に対する直接的な答えではなく、コアの問題の回避策です。
Gnome-keyring ssh-agentの起動を停止します。その後、ssh-agent、ssh-add、およびsshは期待どおりに動作します。 (または、少なくとも予想どおり)。
Gnome-keyring ssh-agentの開始を停止するには:
Sudo mv /etc/xdg/autostart/gnome-keyring-ssh.desktop /etc/xdg/autostart/gnome-keyring-ssh.desktop.disabled
これにより、sshパスワードのグラフィカルプロンプトが起動しますが、実際にはsshがsshキーを使用できるようにするプロンプトとは異なります。これを行った後でも、sshキーのパスフレーズを尋ねるGUIプロンプトが表示されます:/
詳細については、上記の質問の編集3を参照してください。
最後にそれをトリガーする方法を見つけました。 ~/bin/gssh-add
を作成し、その中に以下を入れました:
SSH_ASK_PASS=/usr/bin/ssh-askpass ssh-add
次に、実行可能にします。
chmod +x ~/bin/gssh-add
そして、Alt + F2を使用して起動します。それはgnomeダイアログボックスをトリガーします。
ターミナルからgssh-add
を実行すると、gnomeダイアログボックスがトリガーされないことに注意してください。理由の詳細については、 ssh-add manページの環境セクション を参照してください。
または、tmuxinatorを起動する前にどこかでsshできますが、ここでは接続が遅いため、摩擦が増えます。
「somewhere」はリモートである必要がないことを忘れないでください。
ssh localhost
それが私が通常行う方法です。
(その後、新しいシェルプロンプトで^D
と入力して破棄し、古いキーに戻します。余分なキーストロークを気にしないのであれば、ssh localhost true
のようなコマンドがよりきれいな代替手段です。)
もちろん、これはSSHキーを要求するシステムでのみ機能します(例:ssh-copy-id
を使用した後)が、あなたの質問から、おそらくすでにそれを持っているようです。