退出 ssh -tt 会话

Exiting ssh -tt session

我正在远程 ssh 主机上执行如下脚本:

ssh -tt $USER@somehost 'bash -s' < ./myscript.sh

注意伪 tty -tt 开关。

我的问题是脚本完成后 运行 ssh 会话没有结束。输入 exit 也没有任何作用。我如何让它退出?

在没有进一步信息的情况下,即使按照问题执行,以下脚本在执行后也会正确退出。如果这不起作用,请提供一个它不起作用的示例。

echo Hello World
pwd
exit

您缺少 exit 语句。

我怀疑 exit 是必要的原因是因为当你强制分配一个 pty 时,pty 期望输入是一个终端......从终端读取 EOF并不意味着“永远不会有更多的数据”就像它对管道/文件所做的那样——它只是意味着“目前没有来自用户的更多输入' - 因此挂起......它正在等待进一步输入。

此输入脚本(myscript.sh)'hangs':

echo "Hello World..."

这不是:

echo "Hello World..."
exit 0