要测试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进行身份验证。