Автоматический ввод паролей в терминале при помощи expect скриптов

Некоторые программы не имеют возможности принять пароли или прочие данные в аргументах и ожидают ввода их пользователем в терминале. Причем зачастую требуется интерактивная tty сессия. Для такого ввода существует программа expect. Она не только поможет ввести данные telnet, ftp, sftp, su, но и запишет всё необходимое в скрипт script.exp если перед вводом запустить expect_autoexpect

Например, я авторизуюсь на серверах по своему приватному ssh ключу, чтобы не морочить голову с паролями постоянно. Но при этом ключ у меня под паролем и чтобы не вводить его постоянно при подключениях, я должен добавить его однократно за сессию в системе в ssh-agent командой ssh-add и ввести пароль ключа. Но мне в лом даже это делать, я забываю это делать, открываю сразу проект по ssh в vscode а он просит пароль ключа. Чтобы этого не происходило и на этапе входа в систему пароль моего ключа ssh был уже введен и ключ добавлен в ssh-agent, добавим пару скриптов.

Но для начала поставим expect

теперь в скрытом каталоге ~/.ssh разместим свой bash скрипт ~/.ssh/expect-key

этот скрипт проверяет, если ключ ещё не добавлен в агент, то вызывается expect скрипт вводящий пароль:

и при входе юзера в систему вызываем ~/.ssh/expect-key

Проверить добавлены ли ключи ssh-agent можно командой

 

Оставить комментарий

Ваш адрес email не будет опубликован.