mussh 不存在 tty 且未指定 Askpass 程序

mussh 不存在 tty 且未指定 Askpass 程序

在远程机器上使用 MUSSH 执行 bash 脚本

$ mussh -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2
sudo: unable to resolve host hostname
[email protected]: sudo: no tty present and no askpass program specified

如果我直接 ssh 其中一台机器并执行脚本,一切都会正常进行。

答案1

您可以告诉mussh要求使用带有值的选项ssh分配终端,例如,-oRequestTTY

mussh -o RequestTTY=yes -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2

如果你ssh直接使用,你可以使用它的-t选项,但mussh用于-t不同的目的(并且不通过ssh):

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

RequestTTY
指定是否为会话请求伪终端。该参数可能是以下之一:no(切勿请求 TTY),yes (当标准输入是 TTY 时,始终请求 TTY),force (始终请求 TTY)或auto(打开登录会话时请求 TTY)。此选项镜像-t-T标志 SSH(1)

进一步阅读:

答案2

好的,我已经解决了这个问题! (下班后和战斗)

这是完整的工作代码[https://github.com/aurelien-git/MAS]

解决方案是不使用 RequestTTY

但要在 /root/.ssh/authorized_keys 中拥有authorized_keys

现在命令可以正常加载了

mussh -a -i /home/aurelien/.ssh/id_rsa -d -H mas-hostfile -C 'update.sh' -m2

以及更多 ;-)

相关内容