Скажите SSH использовать графическую подсказку для ключевого пароля

Как я могу вынудить SSH запросить пароли с помощью графической подсказки (GTK, например) вместо стандартного, который использует терминал?

Я пытался установить SSH_ASKPASS=/usr/bin/ssh-askpass но это, кажется, не имеет никаких эффектов.

Проблемой является факт, который говорит openssh документация

Если ssh не будет иметь терминала связанным с ним, но ОТОБРАЗИТСЯ, и SSH_ASKPASS установлены, то он выполнит программу, указанную SSH_ASKPASS, и откроет окно X11 для чтения пароля.

ssh запускается из командной строки в моем случае как результат a git push, будет иметь терминал связанным с ним, таким образом, SSH_ASKPASS логика, кажется, проигнорирована.

Обратите внимание на то, что я не обращаюсь к ssh-add, но к универсальным ssh вызовам к хосты, для которых пара ключей присутствует, но защищена паролем.

42
23.07.2013, 02:17
3 ответа

Это не может быть сделано в текущем OpenSSH: существует проблема, открытая в OpenSSH Bugzilla, просящем эту функцию по состоянию на 2013-07: Обобщите SSH_ASKPASS.

9
27.01.2020, 19:35
  • 1
    Это не предоставляет ответ на вопрос. Чтобы критиковать или запросить разъяснение от автора, оставьте комментарий ниже их сообщения. –  cuonglm 13.10.2015, 04:30
  • 2
    @cuonglm "это не возможно", ответ. Это могло бы быть неправильным или вводящим в заблуждение (я не говорю, что это), но это - все еще ответ. –  terdon♦ 22.10.2015, 17:04

1. - Недостающий пакет?

Вы, вероятно, пропускаете пакет, который содержит ssh-askpass. Попытайтесь установить его.

Fedora/CentOS/RHEL:

$ sudo yum install openssh-askpass

Debian/Ubuntu:

$ sudo apt-get install ssh-askpass-gnome ssh-askpass

Нахождение недостающих утилит

Можно искать недостающие инструменты с помощью этих команд:

Fedora/CentOS/RHEL:

$ yum search ssh-askpass
Loaded plugins: langpacks, presto, refresh-packagekit
Adding en_US to language list
======================================================= Matched: ssh-askpass =======================================================
x11-ssh-askpass.x86_64 : A passphrase dialog for X and not only for OpenSSH
ksshaskpass.x86_64 : A KDE version of ssh-askpass with KWallet support
connect-proxy.x86_64 : SSH Proxy command helper
openssh-askpass.x86_64 : A passphrase dialog for OpenSSH and X

Debian/Ubuntu:

$ apt-file -l search ssh-askpass
app-install-data
cruft
git-cola
luckybackup-data
pssh
sdm-terminal
seahorse
ssh-askpass
ssh-askpass-fullscreen
ssh-askpass-gnome

2. - Разъединенный терминал?

Я пропустил это первоначально, но после дополнительных материалов для чтения я заметил этот комментарий в странице справочника ssh относительно SSH_ASKPASS переменная среды.

выборка

SSH_ASKPASS    If ssh needs a passphrase, it will read the passphrase from the 
               current terminal if it was run from a terminal.  If ssh does not
               have a terminal associated with it but DISPLAY and SSH_ASKPASS 
               are set, it will execute the program specified by SSH_ASKPASS 
               and open an X11 window to read the passphrase. This is particularly
               useful when calling ssh from a .xsession or related script.  
               (Note that on some machines it may be necessary to redirect the 
               input from /dev/null to make this work.)

Если Вы замечаете в комментарии, он указывает, что ssh "не имеет терминала связанным" И DISPLAY & SSH_ASKPASS установлены. Замечание этого является ключевым. Таким образом добираться ssh использовать SSH_ASKPASS мы должны добраться ssh не иметь терминал (иначе. STDIN & STDOUT) присоединенный к нему.

Один способ сделать это путем использования команды setsid. Не плохо себя чувствовать. Я никогда не слышал об этом инструменте также. Из страницы справочника:

setsid - запустите программу на новой сессии

Таким образом, если мы работаем ssh как "программа" к setsid мы можем отсоединиться ssh от нашего терминала, соответствующего критериям, упомянутым в sshстраница справочника. Другие критерии установлены следующим образом:

$ echo $DISPLAY; echo $SSH_ASKPASS
:0.0
/usr/libexec/openssh/ssh-askpass

Таким образом, если мы помещаем это все вместе:

$ setsid ssh user@remotehost

Например:

$ setsid ssh user@skinner

                                       ss of ask gui

Решение

Если требуется сделать его так, чтобы setsid "встроено", можно создать псевдонимы как так:

$ alias ssh="setsid ssh"

Теперь, когда Вы ssh Вы получите GUI появление просьбы о Вашем пароле:

$ ssh user@skinner

Ссылки

33
27.01.2020, 19:35
  • 1
    ssh-askpass установлен, и это хорошо работает, если запущено вручную. спасибо –  gioele 23.07.2013, 02:14
  • 2
    @gioele - видят обновления, я думаю, что понял это. –  slm♦ 23.07.2013, 04:29
  • 3
    , которым проблема этого решения состоит в том, что это требует, чтобы я изменил каждого мерзавца или команду rsync для использования setsid ssh instad плоскости ssh. –  gioele 23.07.2013, 11:16
  • 4
    @gioele - Вы попросили метод "вызывать" пароль GUI, это обеспечивает это. Можно заменить команды такой как ssh с псевдонимами setsid ssh один подход. Существуют другие пути. Ограничивающим фактором являются потребности openssh никакой TTY, присоединенный для активации ASK_SSHPASS. –  slm♦ 23.07.2013, 12:08
  • 5
    я не пропускаю пакет и я не могу использовать setsid и затем работа в ssh от моего терминала. Это - просто не действительный ответ вообще!? Плюс, это работало в более старых версиях Ubuntu, таким образом, я не слишком уверен, что понимаю, почему это внезапно прекратило работать! –  Alexis Wilke 30.11.2014, 07:40

У меня была та же проблема, когда я установил морского конька (которые обеспечивают seahorse-ssh-askpass) не устанавливая пакет gnome-keyring на ArchLinux.

Рассмотрение содержания этого пакета gnome-keyring (https://www.archlinux.org/packages/extra/i686/gnome-keyring), может помочь Вам решить свою проблему.

В любом случае, если Вы не возражаете использовать морского конька, можно также установить пакеты seahorse и gnome-keyring (или эквивалентные для Вашего распределения). Если Вы не используете Gnome, дополнительные шаги могут требоваться: https://wiki.archlinux.org/index.php/GNOME_Keyring.

0
27.01.2020, 19:35