Debian 서버에 SSH로 연결할 때 "채널 0 stdin: tty가 아닌 PTY 할당 요청이 실패했습니다" [닫기]

Debian 서버에 SSH로 연결할 때 "채널 0 stdin: tty가 아닌 PTY 할당 요청이 실패했습니다" [닫기]

내 호스팅 공간(Debian Wheezy)은 두 개의 웹사이트(하나는 WordPress, 하나는 Rails)를 제공합니다. 오늘 나는 둘 다 다운된 것을 보고 서버를 다시 시작했습니다. Rails 사이트가 다시 실행되고 이제 WordPress 사이트에 데이터베이스 연결 오류가 표시됩니다. 그런 다음 (SSH에서도) 재부팅한 후 SSH를 통해 서버에 연결했고 다음 메시지를 받았습니다.

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

플래그를 사용하여 실행하면 -v출력 결과가 전혀 이상하지 않은 것 같습니다(공개 키와 개인 키만 확인하면 됩니다). 바라보다이것요점.

다음과 같이 SSH를 실행 ssh user@host "/bin/bash -i"하면할 수 있는원격 쉘에 로그인하십시오.

나는 읽었다또 다른 대답(또한 "bin/bash -i"를 추가하라는 메시지가 표시되므로 도움이 됩니다.) 파일을 수동으로 삭제하고 다시 추가해야 합니다 /dev/pt*. 질문자는 제거 /dev/pts하고 다시 설치해도 효과가 있다고 말했습니다. 불행히도 오류가 발생합니다.

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

/etc/fstab파일은 다음과 같습니다.

#UNCONFIGURED FSTAB FOR BASE SYSTEM

무슨 일이 일어나고 있고 어떻게 해결할 수 있는지 아는 사람이 있습니까?

로컬 출력 tty; ls -l /proc/self/fd:

/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

ls -la /dev/ptmx /dev/pts원격 시스템의 출력:

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

로그인하여 18:10에 ssh root@host "/bin/bash -i"시청하세요 /var/log. cronjob 외에도 편집된 파일이 표시됩니다.

-rw-r----- 1 root        adm       614306 Sep 15 18:10 auth.log

및 시스템 로그(cronjob을 통해). Syslog는 30분마다 PHP와 관련된 일이 발생하기 때문에 우연의 일치입니다.

그런 다음 파일을 scp로컬로 복사합니다.

승인 로그:

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)

말했듯이,이것umount비슷한 질문에 대해서는 달리면서 대답해야 합니다 .mount/dev/ptsmount -t devpts -o OPTIONS devpts /dev/pts

달릴 때 mount보이지 않음 /dev/pts/ 달릴 때 mount /dev/pts/다음을 얻음: can't find /dev/pts in /etc/fstab or /etc/mtab. 출력은 mount다음과 같습니다.

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

다시 설치 해야 할까요 /dev/pts?

다음을 실행하면 더 많은 레코드를 ssh -vvv user@host얻을 수 있습니다.이것.

namei -lx /dev/pts호스트 결과:

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

*/edit 6/ SSH에서 서버를 다시 시작하고 /bin/bash -i명령을 통해 ""를 추가했는데 reboot이제 터미널이 정상으로 돌아왔습니다... 무엇이 잘못되었는지, 무엇이 해결되었는지는 모르겠지만 다시 작동합니다.

답변1

따라서 /dev/pts이것은 pseudo 터미널용 커널에 있는 t가상 파일 시스템 s(s가 무엇을 의미하는지 확실하지 않음) 입니다. sysfs(/sys) 및 procfs(/proc) 과 같이 커널에서 일부 데이터를 내보내는 가상 커널 전용 파일 시스템입니다 . 파일 시스템은 devptson 유형을 사용하여 마운트 해야 합니다 /dev/pts.

이것은 일반적으로 Windows에 없는 특수 파일 시스템이지만 /etc/fstab설치가 필요합니다. 일반적으로 배포판에는 필요한 설치를 수행하기 위한 init 스크립트나 유사한 스크립트가 있지만 때로는 이것이 실패하여 비슷한 문제가 발생할 수 있습니다.

systemd 기반 시스템에서는 이 문제가 더 이상 발생하지 않습니다. systemd는 devpts파일 시스템이 마운트되었는지 확인하는 역할을 합니다.

다른 초기화 시스템을 사용하는 경우 수정 사항은 사용 중인 배포판에 따라 달라질 수 있습니다. Debian에서는 sysvinit파일 devpts시스템이 init 스크립트에 의해 마운트됩니다 mountdevsubfs.sh. 이 문제가 다시 발생하면 다음 두 가지 중 하나를 수행할 수 있습니다.

  • 달리기/etc/init.d/mountdevsubfs.sh restart
  • 초기화 스크립트를 우회하고 수동으로 실행mount -t devpts devpts /dev/pts

관련 정보