Как вручную вызвать диалоговое окно ssh add?

Бег ssh-add в командной строке больше не разблокирует ключи SSH в моей системе (Ubuntu 11.10 с 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 всплывают, и мне приходится вводить фразу-пароль несколько раз. Или я могу ssh где-нибудь перед запуском tmuxinator, но соединение здесь медленное, так что это только добавляет трения. Поэтому я хочу разблокировать ключ 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. Разочарование...

Также интересно, что после "Все идентичности удалены", что ssh-add -l все еще показывает личность. Это смущает меня. И, похоже, работает только один ssh-агент.

Изменить 2:

Я нашел ошибку на панели запуска по этому поводу: https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/841672

Однако этот вопрос был о поиске обходного пути, а не о том, почему это не сработало, поэтому я надеюсь, что этот вопрос не устоит.

Изменить 3:

Ничего необычного в /etc/ssh/ssh_config - Я не коснулся этого. У меня есть ~/.ssh/config но это только порты и имена пользователей.

Я смотрел, какие процессы были запущены, когда всплыло диалоговое окно, и это было /usr/lib/gnome-keyring/gnome-keyring-prompt-3, запущенный /usr/bin/gnome-keyring-daemon --daemonize --login Я попытался запустить подсказку из терминала, но ничего не произошло. Так что все еще застрял.

3 ответа

Решение

Не прямой ответ на вышеупомянутый вопрос, но обходной путь для основной проблемы:

Остановить запуск gshome-keyring ssh-agent. Тогда ssh-agent, ssh-add и ssh работают как положено. (Или, по крайней мере, как я ожидаю).

Чтобы остановить запуск gshome-keyring ssh-agent, выполните:

sudo mv /etc/xdg/autostart/gnome-keyring-ssh.desktop /etc/xdg/autostart/gnome-keyring-ssh.desktop.disabled

редактировать

Это запускает графическое приглашение для моего пароля ssh, но оно отличается от того, которое фактически позволяет ssh использовать ключ ssh. Даже после того, как я это сделал, я все равно получаю подсказку с графическим интерфейсом для запроса моей ключевой фразы ssh:/

См. Редактирование 3 в вопросе выше для получения дополнительной информации.

оригинал

Я нашел способ вызвать его в конце. я создал ~/bin/gssh-add и вставьте в него следующее:

SSH_ASK_PASS=/usr/bin/ssh-askpass ssh-add

Затем я делаю его исполняемым:

chmod +x ~/bin/gssh-add

А потом я запускаю его, используя Alt+F2. Это вызывает диалоговое окно гнома.

Обратите внимание, что если вы запустите gssh-add из терминала это не вызовет диалоговое окно гнома. Обратитесь к разделу ENVIRONMENT справочной страницы ssh-add, чтобы узнать, почему.

Или я могу ssh где-нибудь перед запуском tmuxinator, но соединение здесь медленное, так что это только добавляет трения.

Не забывайте, что ваше " где - то " не обязательно должно быть удаленным:

ssh localhost

Вот как я обычно это делаю.

(Тогда я набираю ^D на новой оболочке подсказывают выбросить и вернуть обратно к моей старой. Если вы не возражаете против дополнительных нажатий клавиш, команда как ssh localhost true более аккуратная альтернатива.)

Конечно, это работает только в системах, которые запрашивают ключи SSH (например, после использования ssh-copy-id), но из вашего вопроса это звучит так, как будто вы, наверное, уже поняли.

Другие вопросы по тегам