Запуск 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-агент.
Я нашел ошибку на панели запуска по этому поводу: 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
. Я попытался запустить приглашение из терминала, но ничего не произошло. Так что все еще застрял.
Это запускает графическое приглашение для моего пароля ssh, но оно отличается от того, которое фактически позволяет ssh использовать ключ ssh. Даже после того, как я это сделал, у меня все еще появляется приглашение с графическим интерфейсом для запроса моей ключевой фразы ssh: /
См. Edit 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, но соединение здесь медленное, так что это только добавляет трения.
blockquote>Не забывайте, что ваше ' где-то ' не обязательно должно быть удаленным:
ssh localhost
Вот как я обычно это делаю.
(Затем я набираю
^D
в новом приглашении оболочки, чтобы выбросить его и вернуться к моему старому. Если вы не возражаете против дополнительных нажатий клавиш, такая команда, какssh localhost true
, является более подходящей альтернативой.) [ 118]Конечно, это работает только в системах, которые запрашивают SSH-ключи (например, после использования
ssh-copy-id
), но из вашего вопроса это звучит так, как будто вы, вероятно, уже получили это.
Не прямой ответ на поставленный выше вопрос, а обходной путь для основной проблемы:
Остановить запуск ssh-agent для gnome-keyring ssh-agent. Тогда ssh-agent, ssh-add и ssh работают как положено. (Или, по крайней мере, как я ожидаю).
Чтобы остановить запуск ssh-agent для gnome-keyring, выполните:
sudo mv /etc/xdg/autostart/gnome-keyring-ssh.desktop /etc/xdg/autostart/gnome-keyring-ssh.desktop.disabled