SSH:执行 sudo 命令

Bol*_*wyn 48 ssh script sudo remote

我有一个交互式 shell 脚本,在一个地方需要 ssh 到另一台机器(基于 Ubuntu)并以 root 身份执行一些东西(用户应该输入他的密码,但远程命令应该像脚本中提到的那样运行):

# ...
ssh remote-machine 'sudo ls'
# ...
Run Code Online (Sandbox Code Playgroud)

但是,我总是收到此错误消息:

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

好的,这很清楚。但是我怎样才能规避这一点呢?应该发生这样的事情:

$ ssh remote-machine 'sudo ls /'
[sudo] password for user1:

/bin
/etc
/var
Run Code Online (Sandbox Code Playgroud)

Bol*_*wyn 55

神奇ssh的东西可以治愈一切。重点是添加-t标志来强制 ssh 分配一个伪 tty:

ssh -t remote-server 'sudo ls'
Run Code Online (Sandbox Code Playgroud)