# 1 - Eksik paket?
Muhtemelen içeren paketi kaçırıyorsunuz ssh-askpass
. Yüklemeyi dene.
Fedora / CentOS / RHEL:
$ sudo yum install openssh-askpass
Debian / Ubuntu:
$ sudo apt-get install ssh-askpass-gnome ssh-askpass
Eksik yardımcı programları bulma
Bu komutları kullanarak eksik araçları arayabilirsiniz:
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 - Bağlantı kesilmiş terminal?
Bunu başlangıçta özledim, ancak daha fazla okuduktan sonra bu yorumu ortam değişkeniyle ssh
ilgili man sayfasında gördüm SSH_ASKPASS
.
alıntı
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.)
Yorumda dikkat çekerseniz, ssh "ile ilişkili bir terminale sahip olmadığını" belirtir ve VE ayarlanır. Bunun fark edilmesi anahtardır. Yani almak için kullanmak biz almak gerekir (aka. Bir terminal yok etmek ve ona bağlı).DISPLAY
SSH_ASKPASS
ssh
SSH_ASKPASS
ssh
STDIN
STDOUT
Komutu kullanarak bunu yapmanın bir yolu setsid
. Kötü hissetme. Ben de bu aracı hiç duymadım. Man sayfasından:
setsid - bir programı yeni bir oturumda çalıştır
Bu yüzden, eğer ssh
“program” olarak setsid
koşarsak ssh
, terminalimizden, ssh
man sayfasında belirtilen kriterleri karşılayabiliriz . Diğer kriterler aşağıdaki gibi belirlenmiştir:
$ echo $DISPLAY; echo $SSH_ASKPASS
:0.0
/usr/libexec/openssh/ssh-askpass
Yani hepsini bir araya getirirsek:
$ setsid ssh user@remotehost
Örneğin:
$ setsid ssh user@skinner
Bir çözüm
Bunu setsid
"yerleşik" olacak şekilde yapmak isterseniz, bunun gibi bir takma ad oluşturabilirsiniz:
$ alias ssh="setsid ssh"
Şimdi ssh
GUI'yi açarken parolanızı soracağınız zaman:
$ ssh user@skinner
Referanslar