2017-02-28 107 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驗證。