SSH 실패 : 채널 0에서 PTY 할당 요청이 실패했습니다.


11

그래서 오류를 확인하고 serverfault를 확인했지만 솔루션이 맞지 않았습니다. 대부분의 결과는 / dev / pts에 문제가 있었지만 탑재되었습니다. 다른 결과는 git의 오류이지만 기계에는 git이 없습니다.

내 계정이 차단되지 않았지만 여전히 콘솔에 로그인 할 수 있습니다. 다른 사용자 도이 문제가 있으므로 내 .ssh /에있는 것과 관련이 있다고 생각하지 않습니다.

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

이 후 세션이 정지됩니다. 아무도 무슨 일이 일어나고 있는지 알고 있습니까?


5
ssh user@host "/bin/bash -i"로그인 에 사용할 수 있습니까?
Tim

흠 .. 그래, 그 작동 ...
blauwblaatje

1
/dev/pt*장치가 손상 되어 장치를 제거하고 수동으로 다시 추가해야하는 경우를 보았습니다 . 이 경우 위에 나열된 해결 방법을 사용하는 것도 효과가있었습니다.
Tim

@Tim 나는 같은 문제가 있습니다. 로 로그인 할 수도 있습니다 ssh user@host "/bin/bash -i. 이 문제를 해결하기 위해 어떤 명령을 실행해야하는지 더 구체적으로 말씀해 주시겠습니까? 어떻게 복원 /dev/pt*합니까? 감사.
Erwin Rooijakkers

4
@ user2609980 run mount, 출력되는 행 중 하나는 / dev / pts 여야하며 옵션을 기록하십시오. OPTIONS를 마운트 해제하기 전에 관찰 한 옵션 umount /dev/pts으로 mount -t devpts -o OPTIONS devpts /dev/pts바꾸고 마운트를 해제했다가 다시 마운트하십시오.
Tim

답변:


10

좋아, 팀 덕분에. / dev / pts를 마운트 해제 한 다음 / dev / pts를 마운트하여 트릭을 수행했습니다.


이것은 매우 이상합니다. 이것이 왜 그런지 아십니까? 이것은 장치 드라이버 버그입니까 아니면 다른 것입니까? 수정 되었습니까? etc.
not2qubit

몰라요. 그리고 나는 그것을 다시 보지 못했습니다.
blauwblaatje

1
@blauwblaatje 나는 같은 문제가 있습니다. 로 로그인 할 수도 있습니다 ssh user@host "/bin/bash -i. 이 문제를 해결하기 위해 어떤 명령을 실행해야하는지 더 구체적으로 말씀해 주시겠습니까? 감사.
Erwin Rooijakkers

지금까지 내가 기억하는 한, 나는 단지 한 : 언 마운트는 / dev / 점 && 마운트는 / dev / 점
blauwblaatje

방금 문제가 있었고 mkdir /dev/pts작동하기 전에해야했습니다. 그렇지 않으면 이것은 나를 위해 문제를 해결했습니다.
Angelo Fuchs

1

ssh를 통해 Linux 에서 windows 로 연결하려고 시도 하고 openssh 가있는 서버 와 freessh가있는 다른 서버를 사용 했습니다 . 서버가 openssh를 사용하면 제대로 작동하지만 지금은 freessh가 서비스를 실행할 때 "채널 0에서 쉘 요청에 실패했습니다"라는 메시지를 표시하기 시작합니다. openssh)

내가 만든 테스트는 다른 사용자의 안정된 연결을 시도하는 것이 었습니다. 제대로 작동한다는 것을 알기 때문에 ~ / .ssh (문제가있는 사용자)를 백업 한 다음 제대로 작동합니다.

관련된 파일은 known_hosts라고 생각합니다. 파마는 내용뿐만 아니라 잘 보이지만 그것이 문제를 해결하는 방법이었습니다.


1

이 오류는 의사 터미널을 여는 데 실패했음을 의미합니다. 아마도 그것은 ssh와 관련이 없습니다. ssh 서버 측에서 디버깅하려면 http://rachid.koucha.free.fr/tech_corner/pty_pdip.html 에서 mypty와 같은 매우 간단한 PTY 데모를 사용하여 PTY 를 전혀 할당 할 수 있는지 확인하십시오. 그렇지 않은 경우 strace를 사용하여 실패한 위치를 조사하십시오. (나에게 그것은 https://www.kernel.org/doc/Documentation/filesystems/devpts.txt에 설명 된 것처럼 컨테이너에 누락 된 / dev / ptmx 심볼릭 링크였습니다 )


0

LANG 및 LC 설정에 따라 달라질 수 있지만 다음과 같이 작동합니다.

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
문제가 환경 LANGLC_*환경 변수 와 관련이 있다고 생각하는 이유는 무엇 입니까?
Adrian Heine

이것이 시작되기 전에 내가 무엇을 바꿨는지 궁금합니다. 실제로 이러한 변수 중 일부를 변경했습니다! 그것이 나에게도 효과가 있는지 봅시다.
Erwin Rooijakkers

0

필자의 경우 Linux 상자에서 Windows 호스트 (cygwin 및 기타 관련 소프트웨어 실행)에 연결하고있었습니다.

대화식 터미널을 할당하는 동안 Windows 서버에 이상하게 연결 하려고 시도 했지만 실패했습니다. ssh -vv아래 로그를 확인하십시오 .

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

제 동료는 Windows 서버에서 열린 프로세스가 많기 때문에 내 것과 동일한 로그인 자격 증명을 사용하고 일부 자동 배치 작업을 수행한다는 것을 알았습니다.

일시적으로 종료하고 트릭을 수행했으며 ssh 연결을 성공적으로 허용했습니다.

아마도 windows + cygwin은 최대 한계가 있습니다. 해당 프로세스가 실행되면 자원을 올바르게 할당 해제하는 작업이 남아 있습니다 .


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.