# 1 - ¿Falta el paquete?
Probablemente te estés perdiendo el paquete que contiene ssh-askpass
. Intenta instalarlo.
Fedora / CentOS / RHEL:
$ sudo yum install openssh-askpass
Debian / Ubuntu:
$ sudo apt-get install ssh-askpass-gnome ssh-askpass
Encontrar utilidades faltantes
Puede buscar las herramientas que faltan con estos 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?
Inicialmente me perdí esto, pero después de leer más, noté este comentario en la página del manual ssh
sobre la SSH_ASKPASS
variable de entorno.
extracto
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.)
Si observa en el comentario, indica que ssh "no tiene un terminal asociado" Y DISPLAY
& SSH_ASKPASS
está configurado. Darse cuenta de esto es clave. Entonces, para poder ssh
usarlo SSH_ASKPASS
, necesitamos ssh
no tener un terminal (también conocido como STDIN
& STDOUT
) conectado.
Una forma de hacerlo haciendo uso del comando setsid
. No te sientas mal. Nunca escuché de esta herramienta tampoco. Desde la página del manual:
setsid: ejecuta un programa en una nueva sesión
Entonces, si corremos ssh
como el "programa" setsid
, podemos desconectarnos ssh
de nuestra terminal y cumplir con los criterios mencionados en ssh
la página de manual de. Los otros criterios se establecen de la siguiente manera:
$ echo $DISPLAY; echo $SSH_ASKPASS
:0.0
/usr/libexec/openssh/ssh-askpass
Entonces, si ponemos todo esto junto:
$ setsid ssh user@remotehost
Por ejemplo:
$ setsid ssh user@skinner
Una solución
Si desea que setsid
sea "integrado", puede crear un alias de esta manera:
$ alias ssh="setsid ssh"
Ahora, cuando ssh
aparezca la GUI emergente, le pedirá su contraseña:
$ ssh user@skinner
Referencias