-t 和 -tt ssh 之间的区别

-t 和 -tt ssh 之间的区别

man ssh说:

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

https://explainshell.com/explain?cmd=ssh+-tt

多个 -t 选项强制分配 tty,即使 ssh 没有本地 tty。

这具体是什么意思?如果系统上没有 shell,ssh 会自己创建吗?-tt 失败时会发生什么?

答案1

如果你这样做:

ssh -t user@server<<EOT
echo test
EOT

您将收到一条消息,指出:Pseudo-terminal will not be allocated because stdin is not a terminal.在这种情况下,stdin 正在提供 ssh,而不是您的本地 shell/tty。

使用-tt将告诉它无论如何都要分配。这是一个用例,我相信还有其他可以应用于此的情况,但 stdin 是最明显的一种。


如果系统上没有 shell,ssh 会创建自己的 shell 吗?

ssh 没有本地 tty 并不表示本地 shell 不存在。上面的示例显示了使用 stdin 流入 ssh。

这具体是什么意思呢?

这意味着它将强制分配 tty,而不管本地连接如何。参见上面的例子。

相关内容