“Pedido de alocação de PTY falhou no canal 0 stdin: não é um tty” quando SSH'ing em um servidor Debian

5

Meu espaço de hospedagem (Debian Wheezy) serve dois sites (um WordPress e um Rails). Hoje eu vi os dois foram para baixo e reiniciei o servidor. O site Rails funciona novamente e o WordPress agora diz que tem um erro ao se conectar ao banco de dados. Em seguida, após a reinicialização (do SSH também) eu SSH'ed no servidor recebi a seguinte mensagem:

PTY allocation request failed on channel 0
stdin: is not a tty

Quando eu executo com -v flag eu recebo saída sem nada estranho, eu acho (apenas checando a chave pública e privada). Veja este gist.

Quando eu SSH como segue ssh user@host "/bin/bash -i" I pode entrar no shell remoto.

Eu li em outra resposta (que também forneceu também a dica com o acréscimo de "bin / bash -i" e isso ajudou) que eu deveria remover manualmente e adicionar novamente os arquivos /dev/pt* . Aquele que fez a pergunta disse que desmontar /dev/pts e remontá-lo funcionou. Infelizmente recebo o erro:

Can't find /dev/pts in /etc/fstab or /etc/mtab

Meus arquivos /etc/fstab são assim:

#UNCONFIGURED FSTAB FOR BASE SYSTEM

Alguém tem alguma ideia do que está acontecendo e como posso resolver isso?

/ edite a saída de tty; ls -l /proc/self/fd localmente:

/dev/pts/2
total 0
lrwx------ 1 erwin erwin 64 Sep 13 19:01 0 -> /dev/pts/2
lrwx------ 1 erwin erwin 64 Sep 13 19:01 1 -> /dev/pts/2
lrwx------ 1 erwin erwin 64 Sep 13 19:01 2 -> /dev/pts/2
lr-x------ 1 erwin erwin 64 Sep 13 19:01 3 -> /proc/4389/fd

Saída de ls -la /dev/ptmx /dev/pts na máquina remota:

crw-rw-rw- 1 root tty  5, 2 Sep 11 00:19 /dev/ptmx

/dev/pts:
total 8
drwxr-xr-x 2 root root 4096 Mar 10  2013 .
drwxr-xr-x 3 root root 4096 Sep 11 00:35 ..

/ edit 2

Faça login via ssh root@host "/bin/bash -i" às 18:10 e procure em /var/log . Além de um cronjob, vi um arquivo que foi editado:

-rw-r----- 1 root adm 614306 Sep 15 18:10 auth.log e syslog (via cronjob). O syslog foi uma coincidência, já que algo aconteceu a cada 30 minutos relacionado ao PHP.

Então copiei o arquivo via scp para local.

auth.log:

Sep 15 18:10:23 vz1223 sshd[23681]: Accepted publickey for root from [localIp] port 39126 ssh2
Sep 15 18:10:23 vz1223 sshd[23681]: pam_unix(sshd:session): session opened for user root by (uid=0)
Sep 15 18:12:14 vz1223 sshd[23681]: Received disconnect from [localIp]: 11: disconnected by user
Sep 15 18:12:14 vz1223 sshd[23681]: pam_unix(sshd:session): session closed for user root
Sep 15 18:12:29 vz1223 sshd[23700]: Accepted publickey for root from [localIp] port 39160 ssh2
Sep 15 18:12:29 vz1223 sshd[23700]: pam_unix(sshd:session): session opened for user root by (uid=0)
Sep 15 18:12:29 vz1223 sshd[23700]: Received disconnect from [localIP]: 11: disconnected by user
Sep 15 18:12:29 vz1223 sshd[23700]: pam_unix(sshd:session): session closed for user root
Sep 15 18:12:47 vz1223 sshd[23709]: Accepted publickey for root from [localIp] port 39163 ssh2
Sep 15 18:12:47 vz1223 sshd[23709]: pam_unix(sshd:session): session opened for user root by (uid=0)

* / edit 3 /

Como dito, de acordo com este responder a uma pergunta semelhante Eu deveria umount e mount my /dev/pts executando mount -t devpts -o OPTIONS devpts /dev/pts .

Quando executo mount , não vejo /dev/pts / E quando executo mount /dev/pts/ , obtenho: can't find /dev/pts in /etc/fstab or /etc/mtab . A saída de mount é a seguinte:

/home/vz/private/1223 on / type simfs (rw,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=6556k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=39320k)

Talvez eu devesse pegar /dev/pts para montar de novo?

* / edit 4 / Mais registro com execução de ssh -vvv user@host fornece este .

* / edit 5 / resultado de namei -lx /dev/pts no host:

f: /dev/pts
Drwxr-xr-x root root /
drwxr-xr-x root root dev
drwxr-xr-x root root pts

* / edit 6 / Eu reiniciei o servidor mais uma vez do SSH com o "/ bin / bash -i" anexado via o comando reboot e agora o terminal voltou ao normal ... Eu não tenho ideia do que aconteceu errado nem o que resolveu, mas funciona de novo.

Muito obrigado a todos pela ajuda!

    
por Erwin Rooijakkers 11.09.2014 / 19:06

1 resposta

1

Portanto, /dev/pts é um sistema de arquivos virtual no kernel para p seudo t erminal s (algo; não sei o que significa s). É um sistema de arquivos virtual somente para kernel que exporta alguns dados do kernel, muito parecido com sysfs (/ sys) e procfs (/ proc). O sistema de arquivos deve ser montado com um tipo devpts , em /dev/pts .

Este é um sistema de arquivos especial que normalmente não aparece em /etc/fstab , mas precisa ser montado. Normalmente as distribuições possuem scripts init ou similares para fazer as montagens necessárias; mas ocasionalmente isso pode falhar, e então você tem problemas assim.

Em sistemas baseados em systemd, esse problema não deve mais ocorrer; O systemd cuida de garantir que o sistema de arquivos devpts esteja montado.

Se você usar um sistema init diferente, a correção poderá depender da distribuição usada. No Debian com sysvinit , o sistema de arquivos devpts é montado pelo script mountdevsubfs.sh init. Se você se deparar com esse problema novamente, poderá fazer uma das duas coisas:

  • Executar /etc/init.d/mountdevsubfs.sh restart
  • Ignorar o script de inicialização e executar manualmente mount -t devpts devpts /dev/pts
por 25.01.2018 / 18:53