什么是伪 TTY 分配? (SSH 和 Github)

Posted

技术标签:

【中文标题】什么是伪 TTY 分配? (SSH 和 Github)【英文标题】:What is Pseudo TTY-Allocation? (SSH and Github) 【发布时间】:2013-07-27 20:51:24 【问题描述】:

我试图按照本教程设置与 Github 的 SSH 连接:

Testing your SSH connection

我遇到了以下命令:

$ ssh -T git@github.com 
# Attempts to ssh to github

很好奇,我查看了 ssh 手册。上面写着:

 -T      Disable pseudo-tty allocation.

什么是tty分配? tty 代表什么?我们为什么要禁用它?我认真地尝试查找它,但我什至找不到定义。

【问题讨论】:

可能和Pseudo terminals有关?还有,你googled pseudo tty-allocation的时候真的没发现有用吗? 谁知道伪终端与 tty 有任何关系。我实际上确实找到了该链接,但认为它与 tty 分配无关,呵呵。谢谢! 我正在设置 SSH 连接,我正在遵循相同的教程,我想这个 -T 选项是什么,出于好奇,我查看了 ssh 手册页,然后我有同样的问题你有! 【参考方案1】:

如“gitolite: PTY allocation request failed on channel 0”中所述,使用-T 进行ssh 测试连接很重要,因为如果请求text-terminal (tty),某些服务器可能会完全中止事务。

-T 避免请求所述终端,因为 GitHub 无意为您提供交互式安全 shell,您可以在其中键入命令。

GitHub 只想回复您的 ssh 请求,以确定 ssh 命令是否有效(您拥有正确的公钥/私钥,并且公钥已注册到 your GitHub account)

PuTTy 是terminal emulator、serial console 和网络文件传输应用程序的示例。它支持多种网络协议,包括 SCP、SSH、Telnet 和 rlogin。 “PuTTY”这个名字有no definitive meaning,虽然“tty”是Unix传统中终端的名字,通常是Teletype的缩写


-T 的其他用例(测试除外)

Transferring binary files Execute commands on a remote server SSH隧道:ssh -fnT -L port:server:port user@server(后台-f:你不想执行命令,不需要TTY,只想建立隧道)

【讨论】:

谢谢。 -T 是否仅用于测试连接,因为它避免分配 tty? @Tim 不,它在传输二进制文件 (serverfault.com/a/746638/783) 或在远程服务器上执行命令 (unix.stackexchange.com/a/88616/7490) 时很有用(禁用 tty)

以上是关于什么是伪 TTY 分配? (SSH 和 Github)的主要内容,如果未能解决你的问题,请参考以下文章

SSH 不分配远程主机tty

对分配伪 TTY 的 Docker -t 选项感到困惑

从 ~/.ssh/config 调用的脚本丢失 TTY

使用没有 tty 的 heredoc 在 ssh 后获取 bash 提示

Linux 伪终端(pty)

如何在不覆盖 TTY 的情况下将密码传递给 su/sudo/ssh?