키 비밀번호에 대한 그래픽 프롬프트를 사용하도록 SSH에 지시

키 비밀번호에 대한 그래픽 프롬프트를 사용하도록 SSH에 지시

비밀번호를 요청하기 위해 터미널의 표준 프롬프트를 사용하는 대신 SSH가 그래픽 프롬프트(예: GTK)를 사용하도록 하려면 어떻게 해야 합니까?

설정해 보았는데 SSH_ASKPASS=/usr/bin/ssh-askpass작동하지 않는 것 같습니다.

문제는 openssh 문서에 다음과 같이 나와 있다는 사실입니다.

SSH인 경우연결된 터미널이 없습니다.DISPLAY와 SSH_ASKPASS가 설정되면 SSH_ASKPASS에 지정된 프로그램을 실행하고 X11 창을 열어 비밀번호를 읽습니다.

명령줄에서 ssh를 시작하면 제 경우 결과는 다음과 같습니다 git push.~ 할 것이다연관된 터미널이 있어서 SSH_ASKPASS로직이 무시되는 것 같습니다.

여기서는 SSH를 언급하는 것이 아니라 ssh-add키 쌍이 존재하지만 비밀번호로 보호되는 호스트에 대한 일반 SSH 호출을 언급하고 있다는 점에 유의하세요.

답변1

#1 - 패키지가 분실되었나요?

include가 누락되었을 수 있습니다 ssh-askpass. 설치해 보세요.

페도라/센트OS/RHEL:

$ sudo yum install openssh-askpass

데비안/우분투:

$ sudo apt-get install ssh-askpass-gnome ssh-askpass

누락된 유틸리티 찾기

다음 명령을 사용하여 누락된 도구를 검색할 수 있습니다.

페도라/센트OS/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

데비안/우분투:

$ 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 - 터미널 연결이 끊어졌나요?

처음에는 이것을 놓쳤지만 더 자세히 읽은 후에 환경 변수 ssh에 대한 SSH_ASKPASS매뉴얼 페이지에서 이 주석을 발견했습니다.

발췌

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.)

주석에서 발견한 경우 ssh에 "관련 터미널이 없습니다"라고 나와 있습니다.그리고 DISPLAY& SSH_ASKPASS설정되었습니다. 이것을 알아차리는 것이 핵심입니다. 따라서 ssh이를 사용 하려면 터미널을 연결되지 않은 상태로 두어야 SSH_ASKPASS합니다 (일명 " & ").sshSTDINSTDOUT

한 가지 방법은 다음 명령을 사용하여 이를 수행하는 것입니다.setsid. 슬퍼하지 마. 나도 이 도구에 대해 들어본 적이 없다. 매뉴얼 페이지에서:

setid - 새 세션에서 프로그램 실행

따라서 "프로그램"으로 실행하면 ssh매뉴얼 페이지에 언급된 기준에 따라 터미널에서 setsid분리 할 수 있습니다. 기타 표준 설정은 다음과 같습니다.sshssh

$ echo $DISPLAY; echo $SSH_ASKPASS
:0.0
/usr/libexec/openssh/ssh-askpass

따라서 이 모든 것을 종합하면 다음과 같습니다.

$ setsid ssh user@remotehost

예를 들어:

$ setsid ssh user@skinner

                                       Gui의 SS에게 물어보세요

떨어져 있는

setsid"내장"으로 만들려면 다음과 같은 별칭을 만들 수 있습니다.

$ alias ssh="setsid ssh"

이제 sshGUI를 팝업하고 비밀번호를 묻습니다.

$ ssh user@skinner

인용하다

답변2

이 문제를 해결하는 데 19년이 걸렸습니다.OpenSSH 버그 69 - 일반 비밀번호 요청.

OpenSSH 8.4에는 force|prefer|never 옵션을 허용하는 $SSH_ASKPASS_REQUIRE 변수가 포함됩니다.

SSH_ASKPASS_REQUIRE를 기본 설정으로 설정하면 ssh-addssh-askpass 사용자 인터페이스가 터미널에서 시작됩니다. 내 Arch Linux 시스템의 내 디렉토리에는 다음이 있습니다..xinitrc

export SSH_ASKPASS=/usr/lib/ssh/x11-ssh-askpass
export SSH_ASKPASS_REQUIRE=prefer
eval `keychain --eval --noask ~/.ssh/id_rsa`

내 안에는 ~/.ssh/config내가 있어

AddKeysToAgent yes

따라서 재부팅 후 처음으로 내 프로젝트 중 하나를 실행하면 git pullAskpass 대화 상자가 올바르게 나타나고 비밀번호를 한 번만 묻습니다.

도움이 되길 바랍니다.

답변3

8.4 이전 버전의 OpenSSH에서는 이 작업을 수행할 수 없습니다. 자세한 내용은 2002년부터 이 기능이 필요했고 2021년 1월에 최종적으로 수정된 OpenSSH Bugzilla의 문제를 읽어보세요.요약SSH_ASKPASS.

OpenSSH 버전 8.4+의 경우 다음을 참조하세요.수락된 답변이를 달성하기 위해 사용하는 방법에 대한 간단한 설명입니다 SSH_ASKPASS_REQUIRE.

답변4

패키지를 설치하지 않고 ArchLinux에 Seahorse(제공)를 설치했을 때도 seahorse-ssh-askpass같은 문제가 발생했습니다 .gnome-keyring

이 패키지의 내용 보기 gnome-keyring(https://www.archlinux.org/packages/extra/i686/gnome-keyring) 문제를 해결하는 데 도움이 될 수 있습니다.

어쨌든 해마를 사용하는 것이 마음에 들지 않는다면 패키지 seahorsegnome-keyring(또는 배포본에 상응하는 것)을 설치할 수도 있습니다. Gnome을 사용하지 않는 경우 추가 단계를 수행해야 할 수도 있습니다.https://wiki.archlinux.org/index.php/GNOME_Keyring.

관련 정보