Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在ssh中使用-T_Ssh - Fatal编程技术网

为什么在ssh中使用-T

为什么在ssh中使用-T,ssh,Ssh,要测试ssh,我读到您需要使用类似于ssh-T的东西user@domain.com: 根据manssh: -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

要测试ssh,我读到您需要使用类似于
ssh-T的东西user@domain.com

根据
manssh

 -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时使用
-T
的目的是什么


我阅读了pseudo terminals(),但这似乎没有帮助。

要在ssh shell中使用交互式提示符,还需要在服务器端分配PTY。当您调用
ssh-host
时,它会自动完成

当您在服务器上分配此PTY时,您的本地终端和远程终端正在交换一些附加消息(终端控制字符),这些消息为远程外壳提供有关本地终端大小的信息,远程终端可以更新窗口标题等。当您想要传输文件或只是“按原样”传递输出时,这是您真正不想要的。它会修改它,你会得到其他的东西。同样,如果您使用
scp
或仅使用非交互脚本作为
ssh-host-my-u-script
,这将自动完成

到目前为止还不错。你不需要开关。但事情可能并不总是那么简单

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

  • 同样的事情也可以反过来。您可能已经设置了服务器,无论您请求什么命令,它都会给您一些输出。在这种情况下,您真的不想用任何终端控制字符来搞乱它,然后您可能希望使用
    ssh-t host
    来避免这种情况

可以考虑<代码> -t/代码>作为服务器上安全资源的方式,作为一些“第二道防线”。您可以在服务器配置中禁用TTY分配,但是如果

-T
开关最常见的使用情况是

ssh -T git@github.com
验证您是否已正确设置ssh密钥以向github进行身份验证