Как я могу вынудить SSH запросить пароли с помощью графической подсказки (GTK, например) вместо стандартного, который использует терминал?
Я пытался установить SSH_ASKPASS=/usr/bin/ssh-askpass
но это, кажется, не имеет никаких эффектов.
Проблемой является факт, который говорит openssh документация
Если ssh не будет иметь терминала связанным с ним, но ОТОБРАЗИТСЯ, и SSH_ASKPASS установлены, то он выполнит программу, указанную SSH_ASKPASS, и откроет окно X11 для чтения пароля.
ssh запускается из командной строки в моем случае как результат a git push
, будет иметь терминал связанным с ним, таким образом, SSH_ASKPASS
логика, кажется, проигнорирована.
Обратите внимание на то, что я не обращаюсь к ssh-add
, но к универсальным ssh вызовам к хосты, для которых пара ключей присутствует, но защищена паролем.
Это не может быть сделано в текущем OpenSSH: существует проблема, открытая в OpenSSH Bugzilla, просящем эту функцию по состоянию на 2013-07: Обобщите SSH_ASKPASS.
Вы, вероятно, пропускаете пакет, который содержит 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
Я пропустил это первоначально, но после дополнительных материалов для чтения я заметил этот комментарий в странице справочника 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
Если требуется сделать его так, чтобы setsid
"встроено", можно создать псевдонимы как так:
$ alias ssh="setsid ssh"
Теперь, когда Вы ssh
Вы получите GUI появление просьбы о Вашем пароле:
$ ssh user@skinner
setsid ssh
instad плоскости ssh
.
– gioele
23.07.2013, 11:16
ssh
с псевдонимами setsid ssh
один подход. Существуют другие пути. Ограничивающим фактором являются потребности openssh никакой TTY, присоединенный для активации ASK_SSHPASS.
– slm♦
23.07.2013, 12:08
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.