![SSH 失败:通道 0 上的 PTY 分配请求失败](https://linux22.com/image/572962/SSH%20%E5%A4%B1%E8%B4%A5%EF%BC%9A%E9%80%9A%E9%81%93%200%20%E4%B8%8A%E7%9A%84%20PTY%20%E5%88%86%E9%85%8D%E8%AF%B7%E6%B1%82%E5%A4%B1%E8%B4%A5.png)
于是我谷歌了一下错误,并检查了 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 [email protected]
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
此后会话冻结。有人知道发生了什么吗?
答案1
好的,感谢 Tim。卸载 /dev/pts 然后挂载 /dev/pts 就可以了。
答案2
让我告诉你我所有的经历,我尝试连接Linux的到视窗通过 ssh,有服务器openssh以及其他人自由通讯。当服务器有 openssh 时,它工作正常,但从现在起,当 freessh 是正在运行的服务时,它开始显示“通道 0 上的 shell 请求失败”消息(它一天天出现,它曾经比 openssh 工作得更好)
我进行的一个测试是尝试与另一个用户建立连接,我发现它运行良好,我备份了我的 ~/.ssh(出现问题的用户),之后它运行良好。
我认为所涉及的文件是known_hosts,其权限和内容看起来都很好,但这就是我修复它的方法。
答案3
这个错误只是意味着打开伪终端失败。很可能与 ssh 无关。要在 ssh 服务器端进行调试,请使用一个非常简单的 PTY 演示,例如 myptyhttp://rachid.koucha.free.fr/tech_corner/pty_pdip.html查看是否可以分配 PTY。如果不能,请使用 strace 调查失败的原因。(对我来说,这是因为容器中缺少 /dev/ptmx 符号链接,如https://www.kernel.org/doc/Documentation/filesystems/devpts.txt)
答案4
可能取决于你的 LANG 和你的 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