2010-02-11 3 views
6

jeden Tag stoße ich auf ein sehr seltsames Phänomen."ssh example.com" hängt aber "ssh example.com bash -i" nicht

Von meiner Universität Internetverbindung funktioniert sshing zu meinem Rechner ("ssh example.com") ohne Probleme.

Aus meiner Heimat adsl, „ssh example.com“ meine Konsole mit dieser Nachricht klemmt:

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. 

drin lassen könnte mich Manchmal aber den meisten Fällen nicht. Die lustige Sache ist, dass wenn ich "ssh example.com bash -i" ausführen werde ich sofort eingeloggt.

Antwort

11

Ich habe endlich die Ursache des Problems gefunden. Es hat mit SSH-Diensttyp (ToS) -TCP-Paketen zu tun.

Wenn Sie nach einem regulären SSH-Terminal fragen, setzt ssh den TCP-Paket-Diensttyp (ToS) auf "interaktiv". Mein Router in meiner Wohnung blockiert diese Pakettypen!

Mit netcat erhalten die getunnelten TCP-Pakete keine Art von Dienstanweisungen. Wenn Sie also Ihren gesamten ssh-Datenverkehr über netcat tunneln, setzen Sie das ToS der TCP-Pakete auf die Standardeinstellungen zurück.

In .ssh/config, müssen Sie folgendes einstellen:

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

Also, jedes Mal, wenn Sie versuchen, example.com, netcat ssh werden die Pakete genannt und tunnelt werden.

0

Der Unterschied zwischen den beiden Fällen ist, dass "bash -i" Ihnen keine Login-Shell gibt, sondern nur ssh ausgeführt wird. Sie können "man bash" für Details darüber, was eine "Login-Shell" ist, aber die Hauptsache ist, dass es/etc/profile und Ihr .bash_profile ausführt. Schauen Sie in diese Dateien nach allem, was ein Problem verursachen könnte.

0

Vielleicht ist der Server aus ptys.

1

Ich hatte gerade das gleiche Problem. Versuchen Sie, sich mit einem anderen ssh-Client anzumelden, um weitere Informationen zu erhalten. Während der Linux-Befehlszeilenclient mit keiner nützlichen Nachricht zurückkam, kam Putty mit "Server weigerte, pty zuzuweisen" zurück. Ich habe es mit mkdir/dev/pts und mount -a behoben. Wie es dazu kam, dass ich überhaupt nicht so sicher war.

BTW, bash -l sollte sich wie eine Login-Shell verhalten, so dass Sie in der Lage sein sollten, Peter Westlakes Vorschlag in Ihrem Fall richtig oder falsch zu beweisen.

8

Ab OpenSSH 5.7, können Sie einfach diese Datei zu Ihrer ssh Config hinzufügen (entweder ~/.ssh/config oder/etc/ssh/ssh_config):

 
Host * 
    IPQoS 0x00 

Dies ist ein mehr direkter Weg zu umgehen das Problem Asterias identifiziert.