SSH falha: a solicitação de alocação de PTY falhou no canal 0


11

Então pesquisei o erro e verifiquei a falha do servidor, mas as soluções não se encaixavam. A maioria dos resultados foram problemas com / dev / pts, mas isso está montado. Outros resultados são erros no git, mas não há git na máquina.

Minha conta não está bloqueada. Ainda consigo fazer login no console. Outros usuários também têm esse problema, por isso não acho que tenha algo a ver com algo que está no meu arquivo .ssh /

Eu recebo esta resposta com 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

Depois disso, a sessão congela. Alguém tem alguma idéia do que está acontecendo?


5
Você pode usar ssh user@host "/bin/bash -i"para fazer login?
Tim

hmm .. sim, que as obras ...
blauwblaatje

1
Eu vi um caso em que os /dev/pt*dispositivos precisavam ser removidos e adicionados novamente manualmente porque estavam corrompidos. E, nesse caso, usar a solução alternativa listada acima também funcionou.
Tim

@ Tim Eu tenho o mesmo problema. Eu também posso entrar com ssh user@host "/bin/bash -i. Você poderia ser mais específico sobre quais comandos eu tenho que executar para corrigir isso? Como faço para restaurar /dev/pt*? Obrigado.
Erwin Rooijakkers

4
@ user2609980 run mount, uma das linhas produzidas deve ser / dev / pts, anote as opções. Desmonte umount /dev/ptse remonte mount -t devpts -o OPTIONS devpts /dev/ptssubstituindo OPTIONS pelas opções que você observou antes da desmontagem.
Tim

Respostas:


10

Ok, graças ao Tim. desmontar / dev / pts e depois montar / dev / pts fez o truque.


Isto é muito estranho. Alguma idéia de por que isso é assim? Isso é um bug do driver de dispositivo ou algo mais? Foi consertado? etc ...
not2qubit

Nenhuma idéia. E eu não vi isso de novo.
blauwblaatje

1
@blauwblaatje Eu tenho o mesmo problema. Eu também posso entrar com ssh user@host "/bin/bash -i. Você poderia ser mais específico sobre quais comandos eu tenho que executar para corrigir isso? Obrigado.
Erwin Rooijakkers

Tanto quanto me lembro, eu só fiz: umount / dev / pts && mount / dev / pts
blauwblaatje

Eu apenas tive o problema e precisei mkdir /dev/ptsantes que funcionasse. Caso contrário, isso resolveu o problema para mim.
Angelo Fuchs

1

deixe-me contar toda a minha experiência, tento conectar do linux ao windows via ssh, tive servidores com openssh e outros com freessh . Quando o servidor abre, ele funciona bem, mas, desde então, começa a apresentar uma mensagem de "solicitação de shell falhada no canal 0" quando o freessh é o serviço em execução (veio de um dia para o outro, costumava funcionar melhor que openssh)

Um teste feito por mim foi tentar a conexão estável de outro usuário, pois vejo que ele funciona bem, faço backup do meu ~ / .ssh (o usuário que apresenta o problema) e depois ele funciona bem.

Eu acho que o arquivo envolvido era conhecido_hosts, as permissões parecem bem, assim como o conteúdo, mas foi assim que eu corrigi-lo.


1

O erro significa apenas que a abertura do pseudo terminal falhou. Provavelmente não tem nada a ver com ssh. Para depurá-lo no servidor ssh, use uma demonstração PTY muito simples como mypty em http://rachid.koucha.free.fr/tech_corner/pty_pdip.html para ver se algum PTY pode ser alocado. Caso contrário, use strace para investigar onde falha. (Para mim, havia um link simbólico / dev / ptmx ausente em um contêiner, conforme explicado em https://www.kernel.org/doc/Documentation/filesystems/devpts.txt )


0

Pode depender de você LANG e suas configurações de LC, mas isso funciona para mim:

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
Por que você acha que o problema pode estar relacionado às variáveis ​​de ambiente LANGe LC_*?
Adrian Heine

Eu estou querendo saber o que eu mudei antes que isso começou a acontecer. Na verdade, mudei algumas dessas variáveis! Vamos ver se isso também funciona para mim.
Erwin Rooijakkers

0

No meu caso, eu estava me conectando a um host do Windows (executando o cygwin e outros softwares relacionados) a partir de uma caixa do Linux.

Estranhamente, as tentativas de conexão com o servidor Windows funcionaram, mas falharam ao alocar o terminal interativo. Verifique os ssh -vvregistros abaixo.

...
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
...

Meu colega descobriu que era por causa de muitos processos abertos no servidor Windows que usavam as mesmas credenciais de login que as minhas e realizavam alguma operação em lote automatizada.

Matá-lo temporariamente, fez o truque e permitiu minha conexão ssh com sucesso.

Muito provavelmente, windows + cygwin, tinha limite máximo nesse sentido. Ainda resta trabalho para desalocar recursos corretamente quando esses processos são executados.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.