2010-02-11 4 views
6

이 아닙니다. 나는 매우 이상한 현상을 매일 경험합니다."ssh example.com"은 중단되지만 "ssh example.com bash -i"는

내 대학 인터넷 연결에서 내 컴퓨터 ("ssh example.com") 로의 sshing이 문제없이 작동합니다. 내 집에 ADSL에서

은 "ssh를 example.com"내 콘솔은이 메시지와 함께 내동댕이 :

debug1: Server accepts key: pkalg ssh-rsa blen 533 
debug1: Enabling compression at level 6. 
debug1: Authentication succeeded (publickey). 
debug1: channel 0: new [client-session] 
debug1: Requesting [email protected] 
debug1: Entering interactive session. 

이 때로는에 있지만 대부분의 경우를 나를 수 있도록 수 있습니다. 재미있는 점은 "ssh example.com bash -i"를 실행하면 즉시 로그인된다는 것입니다.

답변

11

마침내 문제의 원인을 발견했습니다. 그것은 SSH 서비스 유형 (ToS) TCP 패킷과 관련이 있습니다.

일반적인 SSH를 요청하면 ssh는 TCP 패킷 유형을 서비스 (ToS)로 설정합니다. 내 거주지에있는 라우터가 해당 패킷 유형을 차단합니다!

netcat을 사용하면 터널링 된 TCP 패킷에 서비스 지시문 유형이 없습니다. 따라서 netcat을 통해 모든 ssh 트래픽을 터널링하는 경우 TCP 패킷의 ToS를 기본값으로 재설정합니다. 스푸핑/설정에서

, 당신은 설정해야합니다 :

Host *.example.com 
    ProxyCommand nc %h %p 

그래서 때마다 당신이 example.com, netcat을 호출 할 것이다 의지 터널 패킷에 ssh를하려고합니다.

0

두 경우의 차이점은 "bash -i"는 로그인 쉘을 제공하지 않지만 ssh를 실행하는 것입니다. "로그인 쉘"에 대한 자세한 내용은 "man bash"를 참조하십시오.하지만 중요한 점은/etc/profile과 .bash_profile을 실행한다는 것입니다. 이 파일에서 문제를 일으킬 수있는 사항을 찾아보십시오.

0

아마도 서버의 ptys가 부족합니다.

1

방금 ​​같은 문제가있었습니다. 자세한 정보는 다른 ssh 클라이언트로 로그인하십시오. 리눅스 커맨드 라인 클라이언트가 유용한 메시지로 돌아 오지는 않았지만, 퍼티는 "pty 할당을 거부 한 서버"로 돌아왔다. 나는 그것을 mkdir/dev/pts와 mount -a로 고쳤다. 그게 처음에는 잘 모르겠다는 생각이 드는 군.

BTW, bash -l은 로그인 쉘처럼 작동해야 피터 웨스트 레이크 (Peter Westlake)의 제안을 정확하고 틀리게 증명할 수 있어야합니다.

8

OpenSSH 5.7의, 당신은 당신의 ssh 설정 파일 (~/스푸핑/설정 또는/etc/SSH/ssh_config를 중) 다음을 추가 할 수 있습니다

 
Host * 
    IPQoS 0x00 

가 더-직접적인 방법입니다 Asterios가 확인한 문제를 해결하십시오.