№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 "не має терміналу, пов'язаного" AND DISPLAY
& SSH_ASKPASS
. Помітивши це ключово. Тож для ssh
використання SSH_ASKPASS
нам потрібно зробити так, щоб ssh
до нього не був приєднаний термінал (ака. STDIN
& STDOUT
).
Один із способів зробити це за допомогою команди setsid
. Не відчувай себе погано. Я ніколи не чув про цей інструмент. На чоловіковій сторінці:
setid - запустіть програму в новому сеансі
Отже, якщо ми запускаємо ssh
як "програму", setsid
ми можемо відірватися ssh
від нашого терміналу, відповідаючи критеріям, зазначеним на ssh
сторінці man. Інші критерії встановлюються наступним чином:
$ 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
отримаєте графічний інтерфейс, що з'являється, запитуючи пароль:
$ ssh user@skinner
Список літератури