Linux 가상 터미널에서 Unix `pass` 프로그램이 `ssh`와 잘 작동하도록 만드는 방법은 무엇입니까?

Linux 가상 터미널에서 Unix `pass` 프로그램이 `ssh`와 잘 작동하도록 만드는 방법은 무엇입니까?

passGUI 상호작용 없이 프로그램에서 직접 비밀번호를 추출하여 SSH 서버에 로그인하려고 합니다 .

GUI(Gnome)의 일반적인 작업 흐름은 다음을 수행하는 것입니다.

  1. 비밀번호를 클립보드로 가져옵니다.pass -c Misc/MyAccount
  2. SSH 프로그램을 실행하고 GUI 클립보드를 사용하여 붙여넣기

    ssh myserver
    Right-Click + Paste
    

GUI 구성 요소 없이 이 작업을 수행하고 싶었기 때문에 다음과 같이 할 수 있다고 생각했습니다.

 pass Misc/MyAccount | ssh myserver

ssh분명히 이것은 비밀번호가 정확하게 읽히지 않기 때문에 작동하지 않습니다 stdin. 내가 찾은이 문제다음 스크립트를 만들었습니다.

export SSH_ASKPASS="/path/to/script/calling/pass"
setsid ssh "myserver"

gnome-terminalGUI에서 실행할 때 이것은 훌륭하게 작동합니다.

그러나 Linux 가상 터미널(Control-Alt-F1)에서는 비밀번호 프롬프트가 pass평소처럼(터미널에서 직접) 팝업되지 않아 로그인이 실패하기 때문에 실패합니다.

Linux 가상 터미널에서 이 기능을 구현하는 방법은 무엇입니까?

원하는 행동

  1. 위의 스크립트를 실행하세요.
  2. 프로그램 비밀번호 팁 을 참조하십시오 pass.
  3. 성공적으로 로그인하기 위해 서버 비밀번호를 수동으로 입력할 필요가 없습니다 ssh.

답변1

이것이 작동하려면 충족해야 할 몇 가지 요구 사항이 있습니다.

  • DISPLAYSSH_ASKPASS기능을 활성화하려면 환경 변수에 무엇인가(무엇이든 가능함)를 설정해야 합니다 .
  • gpg-agenttty를 기반으로 해야 합니다 .소나무프로그램. Debian/Ubuntu 시스템에서 실행 apt-get install pinentry-curses하고 사용하세요 /usr/bin/pinentry-curses.

다음과 같이 스크립트를 실행합니다.

export DISPLAY=anything
export SSH_ASKPASS="/path/to/script/calling/pass"
gpg-agent --pinentry-program /usr/bin/pinentry-curses --daemon setsid ssh myserver

setsid최신 릴리스(Debian 8.0 이상, Ubuntu 14.10 이상)의 util-linux는 하위 프로세스가 종료될 때까지 기다려야 합니다 . -w그렇지 않으면 백그라운드에서 실행 중인 ssh 세션으로 인해 혼란을 겪게 됩니다.

gpg-agent --pinentry-program /usr/bin/pinentry-curses --daemon setsid -w ssh myserver

관련 정보