# 1 - Paquet manquant?
Vous manquez probablement le paquet qui contient ssh-askpass
. Essayez de l'installer.
Fedora / CentOS / RHEL:
$ sudo yum install openssh-askpass
Debian / Ubuntu:
$ sudo apt-get install ssh-askpass-gnome ssh-askpass
Trouver les services publics manquants
Vous pouvez rechercher les outils manquants à l'aide de ces commandes:
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 déconnecté?
Au début, cela me manquait, mais après une lecture plus approfondie, j’ai remarqué ce commentaire dans la page de manuel ssh
relative à la SSH_ASKPASS
variable d’environnement.
extrait
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 vous remarquez dans le commentaire, il est indiqué que ssh "n'a pas de terminal associé" ET DISPLAY
& SSH_ASKPASS
sont définis. Noter que c'est la clé. Donc, pour pouvoir ssh
utiliser, SSH_ASKPASS
nous devons ssh
ne pas avoir de terminal (ou. STDIN
& STDOUT
).
Une façon de faire cela en utilisant la commande setsid
. Ne te sens pas mal. Je n'ai jamais entendu parler de cet outil non plus. De la page de manuel:
setsid - lance un programme dans une nouvelle session
Ainsi, si nous exécutons ssh
le programme, setsid
nous pouvons nous détacher ssh
de notre terminal en respectant les critères mentionnés dans ssh
la page de manuel de. Les autres critères sont définis comme suit:
$ echo $DISPLAY; echo $SSH_ASKPASS
:0.0
/usr/libexec/openssh/ssh-askpass
Donc, si nous mettons tout cela ensemble:
$ setsid ssh user@remotehost
Par exemple:
$ setsid ssh user@skinner

Une solution
Si vous voulez faire en sorte que le setsid
"soit intégré", vous pouvez créer un alias comme ceci:
$ alias ssh="setsid ssh"
Maintenant, quand vous ssh
aurez l’interface graphique qui vous demandera votre mot de passe:
$ ssh user@skinner
Les références