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

时间:2014-11-19 16:15:21

标签: ssh terminal pty

当我想连接到我的服务器时

ssh -a username@my-server.de -p 22

它给了我两条错误消息:

PTY allocation request failed on channel 0
shell request failed on channel 0

当我使用参数-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

输入密码后我得到了这个

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

22 个答案:

答案 0 :(得分:18)

  

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

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

lsof /dev/pts/*

查看哪些进程已打开伪终端

  

通道0上的shell请求失败

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

答案 1 :(得分:15)

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

umount /dev/pts

mount devpts /dev/pts -t devpts

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

答案 2 :(得分:5)

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

none    /dev/pts    devpts    defaults    0    0

答案 3 :(得分:5)

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

  

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

来自Hetzner的官方维基/文档说:

  

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

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

ssh -p 222 username@my-server.de

答案 4 :(得分:2)

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

no-pty ssh-rsa AAA...nUB9 someuser

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

PTY allocation request failed on channel 0

被退回了。因此,请检查用户的authorized_keys文件。

答案 5 :(得分:1)

从AWS控制台重启实例对我有用。有一项服务泄漏了lsof帮助找到的文件连接。

答案 6 :(得分:1)

这是一个古老的问题,但是如果有人像我一样来到这里...

这可能是服务器中日期错误的结果。如果您使用的是嵌入式系统,则可能是原因...所以请检查日期:

$ date

答案 7 :(得分:1)

这正是我从提供的各种答案中获得帮助的原因。

  • 尝试以root用户身份登录,这将在大多数情况下为您带来帮助
  • 尝试以其他用户身份登录,成功完成,这意味着问题出在特定的帐户上,这意味着问题帐户已经启动了某些进程,这些进程正在消耗阻止登录的资源(很可能是没有进程)
  • 增加上面xmduhan提到的/etc/security/limits.d/20-nproc.conf中的限制
  • 尝试再次ssh,它应该可以工作

答案 8 :(得分:0)

如果您已连接到 EC2 EC2 Serial Console 并尝试从本地计算机执行 SSH,则会出现此错误,因此关闭 EC2 串行控制台 并重新连接 SSH 即可解决.

答案 9 :(得分:0)

因为您已经找到了创建 PTY 的 -T 标志,所以我将只回复第二部分:

<块引用>

shell 请求在通道 0 上失败

你应该传递一个命令:

ssh username@my-server.de -p 22 help

在阅读此处的手册后:https://www.jenkins.io/doc/book/managing/cli/,我发现没有命令它就无法工作并不是很清楚。但正如@U.V. 所说,ssh 接口不是控制台接口,而是一个连接实用程序。所以你需要传递一个命令...

如果来自“jenkins”团队的某个人通过了这篇文章,那么如果我们不通过任何命令,帮助就会出现:-)

答案 10 :(得分:0)

就我而言,SFTP服务器将拒绝您的SSH连接。

答案 11 :(得分:0)

尝试使用选项-NT

ssh -NT ...

答案 12 :(得分:0)

重新启动一个AWS实例对我来说可以解决以下错误:“ shell请求在通道0上失败”

答案 13 :(得分:0)

将本地用户的公共密钥添加到github后,我试图在ssh -t git@github.com上使用sudo时,就会发生这种情况

要小心像我这样的Google快乐的人

答案 14 :(得分:0)

在尝试ssh进入NetGear ReadyNAS设备时,如果人们发现自己正在阅读此质量检查,请确保在对话框中选中“仅rsync”复选框“ 取消”用于管理界面中的ssh服务。

答案 15 :(得分:0)

我也面临同样的问题。只需重新启动服务器即可解决此问题。

答案 16 :(得分:0)

我在使用git bash时遇到此错误。我能够通过为Windows重新安装git来解决此问题。 answer中的更多详细信息。

答案 17 :(得分:0)

启动虚拟机时,偶尔会看到这种情况。我们的自动化系统开始应用更新,因此根据时间可能会触发关键软件包的更新。

快照-如果在目标计算机上更新ssh或其他相关软件包,则可能会发生这种情况。

答案 18 :(得分:0)

刚发现,我的情况是什么问题(提供者策略): 最后,我在输出“ shell请求在通道0上失败”时遇到了同样的问题。

我必须使用主密码以及Web域名作为登录名。 (在德国 www.wunschname.de,其中,wunschname是您的网址。)

使用sftp用户名和相应密码的ssh登录失败。 (尽管scp和sftp可以与这些sftp用户一起使用!)

答案 19 :(得分:0)

重新安装/ dev / pts对我有用。如果您对受影响的计算机运行ssh,则可以通过ssh远程执行此操作。 ssh在运行类似这样的命令时不会请求tty,因此这将允许您远程重新安装/ dev / pts

ssh user @ host-'mount -o remount,rw / dev / pts'

答案 20 :(得分:0)

尝试一下:

vi /etc/security/limits.d/20-nproc.conf
*          soft    nproc     4096   # change to 65535 
root       soft    nproc     unlimited

答案 21 :(得分:0)

shell request failed on channel 0

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