尝试使用 SSH 与 ControlMaster 连接时出现“PTY 分配请求失败”错误

尝试使用 SSH 与 ControlMaster 连接时出现“PTY 分配请求失败”错误

我正在尝试登录 Ubuntu 桌面。我收到以下错误消息:

PTY 分配请求失败

这是什么意思以及如何连接到我的桌面?

这是输出-v

debug1: Reading configuration data /home/evag/.ssh/config  
debug1: /home/evag/.ssh/config line 1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 2
PTY allocation request failed

鉴于上面使用详细选项显示的输出,我想我明白问题的根源:我有两台计算机,A 和 B。我在 A 中使用 controlmaster 来保持与 B 的持久连接。A 以安全的方式登录到 B,以command=/bin/false限制 A 对 B 的使用(它只有转发功能)。

然而,我想在不使用此身份(-i)的情况下从 A 到 B 进行 ssh 连接,但问题是由于存在持久连接,所以无论我在 -i 中输入什么选项,它都会使用现有连接,所以我最终无法分配 PTY。

因此,假设存在从 A 到 B 的现有控制主控和受保护的连接,我如何才能获得从 A 到 B 的另一个连接,但这次具有完全权限?

答案1

我假设您已在 ~/.ssh/config 中指定了 ControlPath 和 ControlMaster?在这种情况下,ssh 在尝试访问该服务器时将始终检查 ControlPath。据我了解,如果 ControlPath 存在,即使设置了 ControlMaster=no,这也是默认设置(因为如果 ControlPath 存在,它会自动设置为“no”,以免尝试创建新的 ControlMaster)。

您将需要指定一个新的 ControlPath:

ssh -o ControlPath=~/.ssh/%r@%h:%p-newsession server

但是:我做了同样的事情,但不需要告诉它运行“false”,我只需使用 SSH 中的可用选项。请参阅手册页以了解创建转发连接而不启动 shell 的方法。如果操作正确,PTY 只会根据需要分配,甚至通过相同的控制连接。

-f      Requests ssh to go to background just before command execution.
-N      Do not execute a remote command.  This is useful for just forwarding ports.
-T      Disable pseudo-tty allocation.

因此就我而言(以及其他不相关的选项):

ssh -fNT server

其中 ~/.ssh/config 已经指定了 ControlPath。

相关内容