参数说明

测试ssh,需要使用类似以下内容的代码:ssh -T user@domain.com

根据man ssh:

1
2
3
4
5
-T      Disable pseudo-terminal allocation.

-t Force pseudo-terminal allocation. This can be used to execute arbitrary screen-based programs on a remote
machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty alloca-
tion, even if ssh has no local tty.

使用说明

要在ssh shell中具有交互式提示,您还需要在服务器端分配PTY。呼叫时会自动完成ssh host。

当您在服务器上分配此PTY时,本地终端和远程终端正在交换一些其他消息(终端控制字符),这些消息为远程外壳程序提供有关本地终端大小的信息,远程终端可以更新窗口的标题和以此类推。当您要传输文件或仅按原样传递输出时,这确实是您不想要的。它将对此进行修改,您通常会得到其他东西。同样,如果您使用scp或仅将非交互式脚本用作,则会自动完成此操作ssh host my_script。

到目前为止很好。您不需要开关。但是事情可能并不总是那么简单。

您可能想调用一些交互式shell作为命令,例如ssh host /bin/zsh。这会起作用,但不会是交互式的。在这种情况下,您需要使用该-t开关使其正常工作:ssh -t host /bin/zsh。

相同的事情可以反过来进行。您可能已经设置了服务器,无论您要求什么命令,它都将为您提供一些输出。在那种情况下,您确实不希望将其与任何终端控制字符弄混,然后您可能想使用它ssh -T host来避免发生这种情况。

您也可以将-Ts作为服务器上资源安全的方式和某些“第二道防线”。您可以在服务器配置中禁用TTY分配,但是如果…

-T交换机最常见的用例是

1
ssh -T git@github.com

验证您已经正确设置了ssh密钥以对github进行身份验证。