ssh 会话中的 heredoc 块内的 sudo 命令不起作用

ssh 会话中的 heredoc 块内的 sudo 命令不起作用

当我使用heredoc并将所有命令放入heredoc时,

ssh -t -i master.pem cloud-user@$1 <<EOSSH
sudo service x restart
sudo service y restart
EOSSH

它会抛出错误,

Pseudo-terminal will not be allocated because stdin is not a terminal.

当我添加另一个 -t 选项时,效果很好,

ssh -t -t -i master.pem cloud-user@$1 <<EOSSH
sudo service x restart
sudo service y restart
EOSSH

pseudo-terminal在 ssh 会话上下文中,这意味着什么?

stdin is not a terminal- bash 不为 ssh 客户端提供标准输入终端吗?

option是什么-t意思以及-t -t与 有何不同-t

答案1

正如中所解释的man ssh

-t 强制伪 tty 分配。这可用于
           在远程计算机上执行任意基于屏幕的程序,这非常
           有用,例如在实现菜单服务时。 多个 -t
           选项强制 tty 分配,即使 ssh 没有本地 tty。

相关内容