与 sshpass 一起使用时出现错误“sudo:不存在 tty 并且未指定 Askpass 程序”

Sha*_*ngh 2 shell sudo sshpass

我想编写一个脚本,在其中需要从不同的计算机获取文件的内容192.168.0.2而不输入密码,因此我使用sshpass以下命令:

sshpass -p "password" ssh -o StrictHostKeyChecking=no user@192.168.0.2 " ls /root/path/of/file"
Run Code Online (Sandbox Code Playgroud)

输出 :

ls: cannot access '/root/path/of/file': Permission denied
Run Code Online (Sandbox Code Playgroud)

我明白了,因为我没有以root用户身份登录。所以我尝试了:

sshpass -p "password" ssh -o StrictHostKeyChecking=no user@192.168.0.2 "sudo ls /root/path/of/file"
Run Code Online (Sandbox Code Playgroud)

输出 :

sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)

我应该怎么办?

Tur*_*urn 5

正如StackExchange 上这个答案/etc/sudoers的详细信息,远程主机上的文件可能不允许您在没有 tty 的情况下运行 sudo 命令。如果您无法解决问题,它还提供了许多解决问题的详细建议。