Как вручную вызвать диалоговое окно 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
), но из вашего вопроса это звучит так, как будто вы, наверное, уже поняли.