# 1 - Thiếu gói?
Có lẽ bạn đang thiếu gói chứa ssh-askpass
. Hãy thử cài đặt nó.
Fedora / CentOS / RHEL:
$ sudo yum install openssh-askpass
Debian / Ubuntu:
$ sudo apt-get install ssh-askpass-gnome ssh-askpass
Tìm kiếm các tiện ích bị thiếu
Bạn có thể tìm kiếm các công cụ bị thiếu bằng cách sử dụng các lệnh sau:
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 - Ngắt kết nối thiết bị đầu cuối?
Tôi đã bỏ lỡ điều này ban đầu nhưng sau khi đọc thêm tôi nhận thấy bình luận này trong trang hướng dẫn ssh
về SSH_ASKPASS
biến môi trường.
đoạn trích
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.)
Nếu bạn nhận thấy trong bình luận, nó nói rằng ssh "không có thiết bị đầu cuối liên quan" VÀ DISPLAY
& SSH_ASKPASS
được đặt. Nhận thấy đây là chìa khóa. Vì vậy, để ssh
sử dụng, SSH_ASKPASS
chúng ta cần ssh
phải có một thiết bị đầu cuối (aka. STDIN
& STDOUT
) Được gắn vào nó.
Một cách để làm điều này bằng cách sử dụng lệnh setsid
. Đừng cảm thấy tồi tệ. Tôi chưa bao giờ nghe nói về công cụ này. Từ trang người đàn ông:
setsid - chạy một chương trình trong một phiên mới
Vì vậy, nếu chúng tôi chạy ssh
như "chương trình" để setsid
chúng tôi có thể tách ra ssh
khỏi thiết bị đầu cuối của mình đáp ứng các tiêu chí được đề cập trong ssh
trang con người. Các tiêu chí khác được đặt như sau:
$ echo $DISPLAY; echo $SSH_ASKPASS
:0.0
/usr/libexec/openssh/ssh-askpass
Vì vậy, nếu chúng ta kết hợp tất cả lại với nhau:
$ setsid ssh user@remotehost
Ví dụ:
$ setsid ssh user@skinner
Một giải pháp
Nếu bạn muốn làm cho nó thành setsid
"tích hợp", bạn có thể tạo một bí danh như vậy:
$ alias ssh="setsid ssh"
Bây giờ khi bạn ssh
sẽ nhận được GUI bật lên hỏi mật khẩu của bạn:
$ ssh user@skinner
Người giới thiệu