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)