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

Perl версия Ответ Стивена :

perl -MSocket -F- -lane '
  sub ip_to_n {unpack"N",inet_aton$_[0]}
  BEGIN {$i=ip_to_n(shift)}
  if (/:$/) {chop;$l=$_} else {
    print $l if $i >= ip_to_n($F[0]) && $i <= ip_to_n($F[1])
  }' 172.25.2.32 file1 file2...

1
23.05.2017, 15:39
1 ответ

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

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

gpg-agent --pinentry-program /usr/bin/pinentry-curses --daemon setsid -w ssh myserver
0
28.01.2020, 01:39

Теги

Похожие вопросы