【发布时间】:2018-04-25 00:07:31
【问题描述】:
我想知道以下命令中的-T 选项有什么作用,在手册中看不到这个选项:
$ ssh -T git@gitlab.com
Welcome to GitLab, Simeon !
谁能解释一下?
【问题讨论】:
-
也许你的手册页有缺陷。看看这个网络化的手册页:man ssh on openbsd.org。它说
-T将 -T 禁用伪终端分配。
我想知道以下命令中的-T 选项有什么作用,在手册中看不到这个选项:
$ ssh -T git@gitlab.com
Welcome to GitLab, Simeon !
谁能解释一下?
【问题讨论】:
-T 将 -T 禁用伪终端分配。
我explained before what TTY was:当您打开与远程服务器的交互式会话时,需要一个文本终端。
但是:在远程 Git 存储库托管服务器(GitHub、Gitlab、BitBucket...)的上下文中,没有远程服务器允许您打开交互式会话(出于安全原因)
那么您仍然会执行ssh -T git@github.com 的唯一原因是测试您是否正确通过了身份验证,会话将立即以:
Hi username! You've successfully authenticated,
but GitHub does not provide shell access.
由于该测试不需要 tty,因此您应该在进行该测试时使用 -T 选项。
【讨论】:
T 是关于 TTY,而不是“交互式”,如 Docker (stackoverflow.com/a/35551071/6309) 所示。但是对于 SSH,由于标准输入通常不容易访问 (stackoverflow.com/q/1340366/6309),删除 TTY 会使会话实际上实际上是非交互式的。