SSH失败:通道0上的PTY分配请求失败


11

因此,我搜索了错误并检查了serverfault,但解决方案不适合。大多数结果是/ dev / pts的问题,但这已安装。其他结果是git出错,但是机器上没有git。

我的帐户未被阻止,我仍然可以在控制台上登录。其他用户也有此问题,因此我认为这与.ssh /中的内容无关。

我用ssh -vv得到这个响应:

<snip>
debug1: Next authentication method: password
rogier@server's password: 
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug2: channel 0: request shell confirm 1
debug2: fd 3 setting TCP_NODELAY
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel_input_status_confirm: type 100 id 0
PTY allocation request failed on channel 0
debug2: channel 0: rcvd adjust 2097152
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0

此后,会话冻结。有人知道发生了什么吗?


5
您可以ssh user@host "/bin/bash -i"用来登录吗?
蒂姆(Tim)

嗯..是的,那...
blauwblaatje 2012年

1
我见过一种情况,由于/dev/pt*设备损坏,需要将其删除并手动重新添加。在这种情况下,使用上面列出的解决方法也可以。
蒂姆(Tim)2012年

@Tim我有同样的问题。我也可以使用登录ssh user@host "/bin/bash -i。您能具体说明我必须运行哪些命令来解决此问题吗?我该如何还原/dev/pt*?谢谢。
Erwin Rooijakkers 2014年

4
@ user2609980 run mount,输出的行之一应该是/ dev / pts,请注意选项。进行卸载,umount /dev/pts然后用mount -t devpts -o OPTIONS devpts /dev/pts在卸载前观察到的选项替换OPTIONS来重新安装。
蒂姆(Tim)

Answers:


10

好的,谢谢蒂姆。先卸载/ dev / pts然后再挂载/ dev / pts可以解决问题。


这很奇怪。知道为什么会这样吗?这是设备驱动程序错误还是其他?已经修复了吗?等等...
not2qubit 2014年

不知道。而且我再也没有看到它。
blauwblaatje 2014年

1
@blauwblaatje我有同样的问题。我也可以使用登录ssh user@host "/bin/bash -i。您能具体说明我必须运行哪些命令来解决此问题吗?谢谢。
Erwin Rooijakkers 2014年

据我所记得,我只做过:umount / dev / pts && mount / dev / pts
blauwblaatje 2014年

我只是遇到了问题,必须mkdir /dev/pts先解决问题。否则,这为我解决了问题。
Angelo Fuchs 2015年

1

让我告诉您我的所有经验,我尝试通过ssh 从linux连接到Windows,安装了带有openssh的服务器,以及其他带有freessh的服务器。当服务器具有openssh时,它可以正常工作,但是从现在开始,当freessh正在运行服务时,它开始显示“ shell 0上的shell请求失败”消息(从一天到另一天,它可以更好地工作, openssh)

我进行的一项测试是尝试从其他用户那里获得稳定的连接,因为我发现它可以正常工作,我备份了〜/ .ssh(提出问题的用户),然后又可以正常工作。

我认为所涉及的文件是known_hosts,权限和内容看起来都不错,但这就是我解决的方法。


1

该错误仅表示打开伪终端失败。它很可能与ssh无关。要在ssh服务器端进行调试,请使用非常简单的PTY演示程序,例如http://rachid.koucha.free.fr/tech_corner/pty_pdip.html中的 mypty,以查看是否可以分配任何PTY。如果不是,请使用strace调查失败的地方。(对我来说,这是一个缺少的/ dev / ptmx符号链接,如https://www.kernel.org/doc/Documentation/filesystems/devpts.txt中所述


0

可能取决于您的语言和LC设置,但这对我有用:

unset LANG        2>/dev/null
unset LC_MONETARY 2>/dev/null
unset LC_NUMERIC  2>/dev/null
unset LC_MESSAGES 2>/dev/null
unset LC_COLLATE  2>/dev/null
unset LC_CTYPE    2>/dev/null
ssh -l username hostname

2
您为什么认为问题可能与LANGLC_*环境变量有关?
Adrian Heine 2012年

我想知道在发生这种情况之前我做了什么更改。我实际上确实更改了其中一些变量!让我们看看它是否也对我有用。
Erwin Rooijakkers 2014年

0

就我而言,我是从Linux机器连接到Windows主机(运行cygwin和其他相关软件)。

奇怪的是,尝试连接到Windows Server的确可行,但是在分配交互式终端时失败了。检查ssh -vv下面的日志。

...
Authentication succeeded
...
Entering interactive session
Requesting authentication agent forwarding.
Sending environment.
Sending env LANG = en_US.UTF-8
PTY allocation request failed on channel 4
...

我的同事发现这是由于Windows服务器上有许多打开的进程所使用的登录凭据与我的相同,并且执行了一些自动批处理操作。

暂时将其杀死,可以解决问题,并成功建立ssh连接。

Windows + cygwin最有可能在此方面达到最大限制。当这些进程完成运行时,仍然需要正确地重新分配资源。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.