为什么将-t与SSH一起使用



要测试SSH,我读到您需要使用诸如 ssh -T user@domain.com

之类的东西

根据 man ssh

 -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.

,但我仍然不清楚,即使阅读了这篇文章,使用-T的目的是测试SSH。

我在伪终端阅读(https://linux.die.net/man/7/pty),但这似乎没有帮助。

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

当您在服务器上分配此PTY时,您的本地终端和远程终端正在交换一些其他消息(终端控制字符),这些消息给出了有关本地终端大小的远程外壳信息,远程可以更新标题您的窗户等等。当您要传输文件或仅通过"原样"输出时,这是您真正不想要的。它会修改它,您通常会得到其他东西。同样,如果您使用scp或仅将非相互作用脚本作为ssh host my_script

,则会自动完成此操作。

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

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

  • 同样的事情可以转过另一条路。您可能已经设置了服务器,无论您的命令如何,它都会为您提供一些输出。在这种情况下,您真的不想用任何终端控制字符弄乱它,然后您可能需要使用ssh -T host来避免使用此离合器。

您也可以将-T视为在服务器上安全资源的方式,并作为"第二道防线"。您可以禁用服务器配置中的TTY分配,但是如果...

-T开关最常见的用例是

ssh -T git@github.com

要验证您是否已正确设置了SSH键,以便对GitHub进行身份验证。

最新更新