如何在通道0上修复请求失败

use*_*268 67 ssh terminal pty

当我想连接到我的服务器这样的时候

ssh -a username@my-server.de -p 22
Run Code Online (Sandbox Code Playgroud)

它给了我两个错误消息:

PTY allocation request failed on channel 0
shell request failed on channel 0
Run Code Online (Sandbox Code Playgroud)

当我使用参数时-T,第一个错误消息消失了.但是如何修复第二个呢?我无法连接.对于其他服务器,我可以毫无问题地连接.

我在MAC OS 10.9上参数-v显示了这个调试输出:

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to xxx.your-server.de [188.40.3.15] port 22.
debug1: Connection established.
debug1: identity file /Users/xxx/.ssh/id_rsa type -1
debug1: identity file /Users/xxx/.ssh/id_rsa-cert type -1
debug1: identity file /Users/xxx/.ssh/id_dsa type -1
debug1: identity file /Users/xxx/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version mod_sftp/0.9.8
debug1: no match: mod_sftp/0.9.8
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 55:f5:ca:ca:01:45:0f:7b:71:0a:1f:ba:9e:25:17:fb
debug1: Host 'xxx.your-server.de' is known and matches the RSA host key.
debug1: Found key in /Users/xxx/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /Users/xxx/.ssh/id_rsa
debug1: Trying private key: /Users/xxx/.ssh/id_dsa
debug1: Next authentication method: password
Run Code Online (Sandbox Code Playgroud)

输入密码后我得到了这个

debug1: Authentication succeeded (password).
Authenticated to xxx.your-server.de ([xxx.xxx.3.15]:22).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = de_DE.UTF-8
shell request failed on channel 0
Run Code Online (Sandbox Code Playgroud)

vha*_*ron 21

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

系统上有256个伪终端的限制.也许你有一个泄漏伪终端的应用程序.使用

lsof /dev/pts/*
Run Code Online (Sandbox Code Playgroud)

看看哪些进程有开放的伪终端

通道0上的shell请求失败

我收到此错误(没有PTY分配错误).事实证明,我的一个应用程序(QtCreator 3.0.?)正在泄露Zombie进程.其他用户能够登录,因此我可能已经达到了我的每个用户进程配额(如果有这样的事情).我已更新到QtCreator 3.3.到现在为止还挺好.

  • OP 说他们在 MacOS 上。该解决方案适用于 MacOS 吗?当我尝试时(MacOS 10.15.5),我得到:`lsof: /dev/pts/* 上的状态错误:没有这样的文件或目录`。 (6认同)

raj*_*alx 17

卸载和挂载/dev/pts为我工作

umount /dev/pts

mount devpts /dev/pts -t devpts
Run Code Online (Sandbox Code Playgroud)

参考:http://www.iitk.ac.in/LDP/LDP/lfs/5.0/html/chapter06/proc.html


eww*_*ink 10

shell request failed on channel 0

意味着您没有 shell 或远程命令访问权限,请修复服务器上的用户权限以具有 shell 访问权限,或者如果您只想使用隧道-N-T选项

  • 一个很棒的例子..:D (4认同)

xmd*_*han 8

尝试这个:

vi /etc/security/limits.d/20-nproc.conf
*          soft    nproc     4096   # change to 65535 
root       soft    nproc     unlimited
Run Code Online (Sandbox Code Playgroud)


小智 7

我解决了我们的一个用户的类似问题,他仅用于 ssh 端口转发,因此他不需要访问 PTY,并且在 .ssh/authorized_keys 文件中被禁止:

no-pty ssh-rsa AAA...nUB9 someuser
Run Code Online (Sandbox Code Playgroud)

因此,当您尝试登录此用户时,只有消息

PTY allocation request failed on channel 0
Run Code Online (Sandbox Code Playgroud)

被退回。所以检查你的用户的authorized_keys 文件。


Ahm*_*gdy 7

如果你想测试你的 github ssh 密钥写入

ssh -T git@github.com

代替ssh -t git@github.com


Man*_*Ali 5

只需将这些行添加到/etc/mtab和中/etc/fstab,然后重新启动系统即可。

none    /dev/pts    devpts    defaults    0    0
Run Code Online (Sandbox Code Playgroud)

  • 但是这段代码是做什么的。您应该提供一个解释 (47认同)
  • 我们做了这个操作(更改 fstab 和 mtab 并重新启动)并且它工作了一段时间。显然,重新启动解决了问题,现在我们怀疑远程计算机资源不足。 (2认同)

Thr*_*igh 5

我尝试通过ssh连接到我的服务器时遇到了完全相同的错误.我可以看到你正在使用Hetzner提供的服务器在端口22上连接它:

debug1:连接到xxx.your-server.de [188.40.3.15]端口22.

来自Hetzner的官方wiki /文档说:

服务器/计算机(控制台)的加密远程诊断协议.要使用的SSH端口是222.

所以你必须通过端口222连接:

ssh -p 222 username@my-server.de
Run Code Online (Sandbox Code Playgroud)