Ошибка sudo: нет tty и не указана программа askpass при использовании с sshpass

Я хочу написать скрипт, в котором мне нужно получить содержимое файла с другой машины 192.168.0.2 без ввода пароля, поэтому я использовал sshpass со следующей командой:

sshpass -p "password" ssh -o StrictHostKeyChecking=no [email protected] " ls /root/path/of/file"

Выход :

ls: cannot access '/root/path/of/file': Permission denied

Я понимаю это, потому что я не вошел в систему как пользователь root. Итак, я попытался:

sshpass -p "password" ssh -o StrictHostKeyChecking=no [email protected] "sudo ls /root/path/of/file"

Выход :

sudo: no tty present and no askpass program specified

Что я должен делать?


person Shashank Singh    schedule 16.01.2018    source источник


Ответы (2)


Как подробно описано в этом ответе на StackExchange, файл /etc/sudoers на удаленном хосте, вероятно, не позволяет вам запускать команды sudo без tty . В нем также есть ряд подробных рекомендаций по решению проблемы, если вы не можете ее исправить.

person Turn    schedule 16.01.2018

Попробуйте ssh -t, который выделит вам tty.

person Community    schedule 16.01.2018
comment
Использование sshpass -p "password" ssh -t -o StrictHostKeyChecking=no [email protected] " ls /root/path/of/file" подсказок [sudo] password for user:. Я хочу, чтобы пароль добавлялся автоматически. - person Shashank Singh; 16.01.2018
comment
Затем вам нужно 1) настроить sudo для использования без пароля или 2) использовать такие инструменты, как expect. - person ; 16.01.2018