当我使用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。