2017-02-28 106 views
0

为了测试SSH我看你需要使用类似ssh -T [email protected]为什么要使用-T使用ssh

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

但我仍然不明确,甚至看完这个,在测试SSH时,使用-T的目的是什么。

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

回答

2

要在你的ssh shell中有交互提示,你需要在服务器端分配PTY。当您拨打ssh host时,它会自动完成。

当您在服务器上分配此PTY时,您的本地终端和远程终端正在交换一些额外的消息(终端控制字符),远程shell可以为您提供有关本地终端大小的信息,远程终端可以更新标题你的窗户等等。当你想传输文件或者只是传递输出时,这是你真正不想要的东西。它会修改,你会得到一般的东西。再次,这是在您使用scp或只是非交互式脚本为ssh host my_script时自动完成的。

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

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

  • 同样的事情可以转向其他方式。你可能会设置服务器,它会给你一些输出,无论你要求的命令。在这种情况下,你真的不想把任何终端控制字符搞乱,然后你可能想用ssh -T host来避免这个离合器。

可以考虑-T也作为方式对服务器和一些“第二道防线”的安全资源。您可以在服务器配置禁用TTY分配,但如果...

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

ssh -T [email protected] 

,以验证您是否正确设置你的SSH密钥向github验证。