Как передать парольную фразу в ssh-add, не вызывая подсказку?

не уверен, что вы нашли решение... но вот как я его решил. Используйте «rufus» для записи iso-образа на USB.. и убедитесь, что вы записываете образ на USB в режиме DD, а не в режиме ISO. Это сделало бы USB LIVE USB без возможности добавления каких-либо файлов, кроме образа, в отличие от режима ISO. Теперь, когда USB-накопитель с образом KALI готов... загрузитесь и начните установку... у вас не возникнет проблем с обнаружением и монтированием компакт-диска

6
08.03.2020, 11:36
2 ответа

Из справочной страницы ssh-add:

 DISPLAY and SSH_ASKPASS
         If ssh-add needs a passphrase, it will read the passphrase from
         the current terminal if it was run from a terminal.  If ssh-add
         does not have a terminal associated with it but DISPLAY and
         SSH_ASKPASS are set, it will execute the program specified by
         SSH_ASKPASS (by default ``ssh-askpass'') and open an X11 window
         to read the passphrase.  This is particularly useful when calling
         ssh-add 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-add -l
The agent has no identities.

Итак, теперь нам нужна программа, которая предоставит пароль:

$ cat x
#!/bin/sh
echo test123

А затем убедите ssh -добавить использовать этот скрипт:

$ DISPLAY=1 SSH_ASKPASS="./x" ssh-add test < /dev/null
Identity added: test (sweh@godzilla)

А вот и:

$ ssh-add -l                                          
2048 SHA256:07qZby7TafI10LWAMSvGFreY75L/js94pFuNcbhfSC0 sweh@godzilla (RSA)

Изменить, чтобы добавить, на основе пересмотренного вопроса:

Пароль может быть передан как переменная, и скрипт askpass использует эту переменную.

Например:

$ cat /usr/local/sbin/auto-add-key
#!/bin/sh
echo $SSH_PASS

$ SSH_PASS=test123 DISPLAY=1 SSH_ASKPASS=/usr/local/sbin/auto-add-key ssh-add test < /dev/null
Identity added: test (sweh@godzilla)

В представленном рабочем процессе вы должны выполнить SSH_PASS=$passphrase, чтобы использовать только что сгенерированную парольную фразу.

14
28.04.2021, 23:21

Вы можете использовать script(1)как мини -expect.

В Linux:

{ sleep.1; echo password; } | script -q /dev/null -c 'ssh-add /path/to/identity'

В BSD:

{ sleep.1; echo password; } | script -q /dev/null ssh-add /path/to/identity

Вы можете увеличить задержку(sleep.3или sleep 1), если правая часть конвейера запускается медленно. Для чего-то более сложного используйтеexpect. Не используйте sshpass, так как он действительно не лучше, чем script, и сам подвержен расам .

4
28.04.2021, 23:21

Теги

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