# 1 - Pacote ausente?
Você provavelmente está perdendo o pacote que contém ssh-askpass
. Tente instalá-lo.
Fedora / CentOS / RHEL:
$ sudo yum install openssh-askpass
Debian / Ubuntu:
$ sudo apt-get install ssh-askpass-gnome ssh-askpass
Localizando utilitários ausentes
Você pode procurar por ferramentas ausentes usando estes comandos:
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 - Terminal desconectado?
Eu perdi isso inicialmente, mas depois de ler mais, notei esse comentário na página de manual ssh
sobre a SSH_ASKPASS
variável de ambiente.
excerto
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.)
Se você notar no comentário, ele afirma que ssh "não possui um terminal associado" AND DISPLAY
& SSH_ASKPASS
está definido. Perceber que isso é fundamental. Portanto, para ssh
usar SSH_ASKPASS
, precisamos ssh
não ter um terminal (aka. STDIN
& STDOUT
) Conectado a ele.
Uma maneira de fazer isso, fazendo uso do comando setsid
. Não se sinta mal. Também nunca ouvi falar dessa ferramenta. Na página do manual:
setsid - executa um programa em uma nova sessão
Portanto, se rodarmos ssh
como o "programa" setsid
, podemos desconectar ssh
do nosso terminal atendendo aos critérios mencionados na ssh
página do manual. Os outros critérios são definidos da seguinte maneira:
$ echo $DISPLAY; echo $SSH_ASKPASS
:0.0
/usr/libexec/openssh/ssh-askpass
Então, se colocarmos tudo isso junto:
$ setsid ssh user@remotehost
Por exemplo:
$ setsid ssh user@skinner
Uma solução
Se você deseja torná-lo setsid
"embutido", é possível criar um alias como:
$ alias ssh="setsid ssh"
Agora, quando ssh
a GUI aparecer, solicitando sua senha:
$ ssh user@skinner
Referências