Как я могу заставить программу unix `pass` играть хорошо с` ssh` внутри виртуального терминала Linux?

Я пытаюсь войти в ssh-сервер, вытаскивая пароль непосредственно из pass программы без какого-либо взаимодействия с графическим интерфейсом.

Обычный рабочий процесс в 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-terminal внутри GUI.

Однако он не работает в виртуальном терминале Linux (из Control-Alt-F1), потому что запрос пароля для pass не может всплывать, как обычно (непосредственно в терминале), поэтому логин просто терпит неудачу.

Как я могу сделать эту работу на виртуальном терминале Linux?

Желаемое поведение

  1. Запустите вышеупомянутый скрипт.
  2. См. Подсказку пароля для программы pass .
  3. Успешно войдите в систему без ручной ввода пароля на сервер ssh .

One Solution collect form web for “Как я могу заставить программу unix `pass` играть хорошо с` ssh` внутри виртуального терминала Linux?”

Есть некоторые требования, чтобы заставить его работать:

  • Для активации функции SSH_ASKPASS вам нужно установить что-нибудь (что-нибудь будет делать) в переменной среды DISPLAY .
  • Вам нужна программа gpg-agent и tit -based pinentry . В системах 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 of util-linux в последних дистрибутивах (Debian 8.0 или новее, Ubuntu 14.10 или новее) нужно -w ждать завершения субпроцесса, иначе вы будете путать с сеансом ssh, работающим в фоновом режиме.

 gpg-agent --pinentry-program /usr/bin/pinentry-curses --daemon setsid -w ssh myserver 
  • HTTP-трафик туннеля через ssh
  • user @ localhost пароль не принимается, когда ssh-ing через туннель
  • sshfs через несколько хостов?
  • Неизвестная команда «vftovp» в истории команд Linux
  • Соединение OpenVPN на удаленном сервере блокирует все входящие соединения
  • Есть ли большая разница в производительности между find и find2perl
  • Как настроить Linux для повторного открытия моих туннелей SSH после восстановления соединения?
  • Какие команды использует git при общении через ssh?
  • Linux ssh запускает графическое приложение и оставляет его запущенным?
  • Как подключиться с удаленного сервера к моему компьютеру?
  • Как сделать параллельное ssh прекратить запрос пароля?
  • Linux и Unix - лучшая ОС в мире.