Die neue SSH-Verbindung beginnt nach etwa einem Tag auf dem Ubuntu 13.04-Server zu hängen (nicht abzulehnen oder zu beenden)

31

Kürzlich haben wir den Server von 12.04 LTS Server auf 13.04 aktualisiert. Alles war gut, auch nach einem Neustart. Mit allen aktualisierten Paketen wurde ein seltsames Problem festgestellt, etwa einen Tag lang funktioniert ssh (unklar über das Timing), dann hängt eine spätere Anforderung für SSH (kann nicht Strg + C, nichts).

Es ist aktiv und dient Webserver-Verkehr usw.

Port 22 ist offen (IPS usw. wurde zum Posten leicht geändert):

nmap -T4 -A x.acme.com

Starting Nmap 6.40 ( http://nmap.org ) at 2013-09-12 16:01 CDT
Nmap scan report for x.acme.com (69.137.56.18)
Host is up (0.026s latency).
rDNS record for 69.137.56.18: c-69-137-56-18.hsd1.tn.provider.net
Not shown: 998 filtered ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.1p1 Debian 4 (protocol 2.0)
| ssh-hostkey: 1024 54:d3:e3:38:44:f4:20:a4:e7:42:49:d0:a7:f1:3e:21 (DSA)
| 2048 dc:21:77:3b:f4:4e:74:d0:87:33:14:40:04:68:33:a6 (RSA)
|_256 45:69:10:79:5a:9f:0b:f0:66:15:39:87:b9:a1:37:f7 (ECDSA)
80/tcp open  http    Jetty 7.6.2.v20120308
| http-title: Log in as a Bamboo user - Atlassian Bamboo
|_Requested resource was http://x.acme.com/userlogin!default.action;jsessionid=19v135zn8cl1tgso28fse4d50?os_destination=%2Fstart.action
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.89 seconds

Hier ist der ssh -vvv:

ssh -vvv x.acme.com
OpenSSH_5.9p1, OpenSSL 0.9.8x 10 May 2012
debug1: Reading configuration data /Users/tfergeson/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to x.acme.com [69.137.56.18] port 22.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/Users/tfergeson/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /Users/tfergeson/.ssh/id_rsa type 1
debug1: identity file /Users/tfergeson/.ssh/id_rsa-cert type -1
debug1: identity file /Users/tfergeson/.ssh/id_dsa type -1
debug1: identity file /Users/tfergeson/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.1p1 Debian-4
debug1: match: OpenSSH_6.1p1 Debian-4 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "x.acme.com" from file "/Users/tfergeson/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /Users/tfergeson/.ssh/known_hosts:10
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],ssh-rsa
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],ssh-rsa,[email protected],[email protected],ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 130/256
debug2: bits set: 503/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA dc:21:77:3b:f4:4e:74:d0:87:33:14:40:04:68:33:a6
debug3: load_hostkeys: loading entries for host "x.acme.com" from file "/Users/tfergeson/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /Users/tfergeson/.ssh/known_hosts:10
debug3: load_hostkeys: loaded 1 keys
debug3: load_hostkeys: loading entries for host "69.137.56.18" from file "/Users/tfergeson/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /Users/tfergeson/.ssh/known_hosts:6
debug3: load_hostkeys: loaded 1 keys
debug1: Host 'x.acme.com' is known and matches the RSA host key.
debug1: Found key in /Users/tfergeson/.ssh/known_hosts:10
debug2: bits set: 493/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /Users/tfergeson/.ssh/id_rsa (0x7ff189c1d7d0)
debug2: key: /Users/tfergeson/.ssh/id_dsa (0x0)
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/tfergeson/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug2: input_userauth_pk_ok: fp 3c:e5:29:6c:9d:27:d1:7d:e8:09:a2:e8:8e:6e:af:6f
debug3: sign_and_send_pubkey: RSA 3c:e5:29:6c:9d:27:d1:7d:e8:09:a2:e8:8e:6e:af:6f
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to x.acme.com ([69.137.56.18]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug2: callback start
debug2: client_session2_setup: id 0
debug2: fd 3 setting TCP_NODELAY
debug2: channel 0: request pty-req confirm 1
debug1: Sending environment.
debug3: Ignored env ATLAS_OPTS
debug3: Ignored env rvm_bin_path
debug3: Ignored env TERM_PROGRAM
debug3: Ignored env GEM_HOME
debug3: Ignored env SHELL
debug3: Ignored env TERM
debug3: Ignored env CLICOLOR
debug3: Ignored env IRBRC
debug3: Ignored env TMPDIR
debug3: Ignored env Apple_PubSub_Socket_Render
debug3: Ignored env TERM_PROGRAM_VERSION
debug3: Ignored env MY_RUBY_HOME
debug3: Ignored env TERM_SESSION_ID
debug3: Ignored env USER
debug3: Ignored env COMMAND_MODE
debug3: Ignored env rvm_path
debug3: Ignored env COM_GOOGLE_CHROME_FRAMEWORK_SERVICE_PROCESS/USERS/tfergeson/LIBRARY/APPLICATION_SUPPORT/GOOGLE/CHROME_SOCKET
debug3: Ignored env JPDA_ADDRESS
debug3: Ignored env APDK_HOME
debug3: Ignored env SSH_AUTH_SOCK
debug3: Ignored env Apple_Ubiquity_Message
debug3: Ignored env __CF_USER_TEXT_ENCODING
debug3: Ignored env rvm_sticky_flag
debug3: Ignored env MAVEN_OPTS
debug3: Ignored env LSCOLORS
debug3: Ignored env rvm_prefix
debug3: Ignored env PATH
debug3: Ignored env PWD
debug3: Ignored env JAVA_HOME
debug1: Sending env LANG = en_US.UTF-8
debug2: channel 0: request env confirm 0
debug3: Ignored env JPDA_TRANSPORT
debug3: Ignored env rvm_version
debug3: Ignored env M2_HOME
debug3: Ignored env HOME
debug3: Ignored env SHLVL
debug3: Ignored env rvm_ruby_string
debug3: Ignored env LOGNAME
debug3: Ignored env M2_REPO
debug3: Ignored env GEM_PATH
debug3: Ignored env AWS_RDS_HOME
debug3: Ignored env rvm_delete_flag
debug3: Ignored env EC2_PRIVATE_KEY
debug3: Ignored env RUBY_VERSION
debug3: Ignored env SECURITYSESSIONID
debug3: Ignored env EC2_CERT
debug3: Ignored env _
debug2: channel 0: request shell confirm 1
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768

Ich kann einen Neustart durchführen (nur Mac-Monitore an diesem Speicherort) und es ist wieder verfügbar. Dies geschieht jetzt jedes Mal. Ich muss es unbedingt sortieren. Das Merkwürdige ist, dass es sich zunächst verhält und dann nach einigen Stunden zu hängen beginnt. Ich habe vorher Protokolle durchgesehen und nichts ist aufgefallen.

Aus dem auth.log kann ich sehen, dass es mir erlaubt hat, aber dennoch bekomme ich auf der Client-Seite nichts zurück:

Sep 20 12:47:50 cbear sshd[25376]: Accepted publickey for tfergeson from 10.1.10.14 port 54631 ssh2
Sep 20 12:47:50 cbear sshd[25376]: pam_unix(sshd:session): session opened for user tfergeson by (uid=0)

AKTUALISIERUNG:

Tritt auch nach dem Setzen UseDNS nound Auskommentieren noch auf#session optional pam_mail.so standard noenv

Dies scheint kein Netzwerk- / DNS-Problem zu sein, da alle auf dem Computer ausgeführten Dienste mit Ausnahme von so schnell wie möglich und zugänglich sind sshd.

Irgendwelche Gedanken darüber, wo ich anfangen soll?

kross
quelle
Ich hatte einmal ein ähnliches Problem und konnte es lösen, aber ich kann mich nicht erinnern, wie. Es war vor ein paar Jahren. Es gab ein paar Puffereinstellungen in /etc/sysctl.conf, denke ich. Auch der Neustart von "Networking" hat das Problem behoben, aber das ist offensichtlich keine Lösung. Es ist keine Antwort, aber vielleicht kann es ein Ausgangspunkt sein.
Trotzdem
Ich deaktiviere die motdInhalte, auf die in diesem Beitrag verwiesen wird, um sicherzustellen, dass dies kein Problem darstellt.
Kross
Es ist einfach wieder vorgekommen, also ist es sicherlich nicht motdverwandt.
Kross
Ich kann keine anderen Vorschläge finden. Obwohl ich nicht denke, dass dies das Problem ist, wollte ich mindestens ein potenzielles Problem beseitigen. Hinzugefügt UseDNS nozu dem /etc/ssh/sshd_config.
Kross
1
Ich würde gerne ein Kopfgeld dafür ausgeben, aber nur Stackoverflow-Punkte haben ...
kross

Antworten:

30

Auf der SshAccess-Seite im GNU Savannah-Dokumentations-Wiki :

Ein Problem kann auftreten, wenn Sie versuchen, mithilfe von OpenSSH eine Verbindung hinter einem NAT-Router herzustellen. Während des Sitzungsaufbaus legt OpenSSH nach der Eingabe des Kennworts das Feld TOS (Type of Service) im IP-Datagramm fest. Es ist bekannt, dass einige Router daran ersticken. Dies hat zur Folge, dass Ihre Sitzung unbegrenzt hängt, nachdem Sie Ihr Kennwort eingegeben haben. Hier ist das Beispiel einer solchen ssh-Sitzung:

user@localhost:~$ ssh -vvv {user-name}@cvs.savannah.gnu.org
OpenSSH_4.7p1 Debian-8ubuntu1.2, OpenSSL 0.9.8g 19 Oct 2007
debug1: Reading configuration data /etc/ssh/ssh_config
[...]
Enter passphrase for key '{homedir}/.ssh/id_rsa':
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
[...]
debug2: fd 5 setting TCP_NODELAY
debug2: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768

und ab hier hängt die sitzung.

Die Lösung besteht darin, ssh dazu zu bringen, den gesamten Datenverkehr über Netcat zu senden, da Netcat das TOS-Feld nicht setzt. Damit dies funktioniert, muss netcat installiert sein. Sie können dies testen, indem Sie Folgendes in die Befehlszeile eingeben:

user@localhost:~$ which nc

und wenn Sie einen Pfad zurückbekommen, wie:

/bin/nc

dann hast du wohl netcat installiert. Für die sehr vorsichtigen könnten Sie auch ausstellen:

user@localhost:~$ nc -h

und schauen Sie sich den anstehenden Hilfetext an. Wenn Sie nicht über Netcat verfügen, finden Sie es unter http://netcat.sourceforge.net/ . Möglicherweise möchten Sie auch das Paketierungssystem ausprobieren, das mit Ihrer Betriebssystemdistribution geliefert wird.

Wenn Sie festgestellt haben, dass Sie Netcat installiert haben, geben Sie den folgenden Befehl ein, um zu testen, ob die Netcat-Route Ihr Problem löst:

ssh -o "ProxyCommand nc %h %p" {user-name}@cvs.savannah.gnu.org

Dabei ist {Benutzername} Ihr Savannah-Anmeldename. Für eine erfolgreiche Anmeldung sollten Sie eine ähnliche Ausgabe erhalten (ohne zu hängen, dh Sie erhalten danach eine Eingabeaufforderung):

user@localhost:~$ ssh -o "ProxyCommand nc %h %p" {user-name}@cvs.savannah.gnu.org
Enter passphrase for key '{home-dir}/.ssh/id_rsa': 
Last login: {datetime} from {ip-adr} 
You tried to execute: 
Sorry, you are not allowed to execute that command. 
Connection to cvs.savannah.gnu.org closed. 
user@localhost:~$

Wenn Sie feststellen, dass Ihr Login über die Netcat-Route funktioniert, können Sie es dauerhaft machen, indem Sie der ssh-Konfigurationsdatei eine Direktive hinzufügen ~/.ssh/config(oder, falls diese Datei nicht existiert, diese erstellen):

ProxyCommand nc %h %p

Hier ist ein Beispiel für eine ssh-Konfigurationsdatei im Home-Ordner eines Benutzers (/home/user/.ssh/config):

# This is the ssh client user configuration file.  See
# ssh_config(5) for more information.  This file provides defaults for
# this user, and the values can be changed on the command line.
#
# Configuration data is parsed as follows:
#  1. command line options
#  2. user-specific file
#  3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.
#
# Directive to overcome TOS issue with our NAT router. During session setup,
# OpenSSH sets the TOS (type of service) field after the user has submitted
# the password. Some routers are known to choke on this, with the result
# that the session hangs during buildup. As workaround we send our traffic
# via netcat which doesn't set the TOS field.
ProxyCommand nc %h %p

Es ist ratsam, auch die Kommentare einzutragen, sonst wundern Sie sich sechs Monate später vielleicht, worum es in dieser Richtlinie geht?

Sie können diese Direktive auch zu Ihrer globalen ssh-Konfigurationsdatei ( /etc/ssh/ssh_config) hinzufügen , aber diese Änderung wäre systemweit, und nicht alle Benutzer auf Ihrem System wissen diese Änderung zu schätzen.

jogi3000
quelle
7
Plagiat ist nicht cool
Gilles 'SO - hör auf, böse zu sein'
Genial, danke, dass du mir hier geholfen hast. Muss ein Albtraum zum Debuggen gewesen sein. Für die Aufzeichnung tritt dieses für mich auf, wenn ich auf einem spezifischen dummen WiFi bin, also habe ich mein ssh_configwie folgt geändert : Match exec "iw dev | grep -q stupid_wifi_ssid" ProxyCommand nc %h %p
Florian Echtler
7

ssh -o IPQoS=0 x.acme.com sollte openssh anweisen, das Setzen des QoS-Feldes zu stoppen, auf dem er sich befindet.

Carey Underwood
quelle
Hat es für mich gelöst. Interessanterweise hatte ein anderer Rechner in meinem LAN dieses Problem nicht. Ich würde dies versuchen, bevor ich Netcat-Routing versuche.
Dominykas Mostauskis
2

So lächerlich das auch klingt, die einzige Lösung, die ich derzeit habe, ist, einen nächtlichen Neustart zu planen. Glücklicherweise ist diese Problemumgehung nur akzeptabel, weil es sich um eine Entwicklungsmaschine handelt, wenn es sich um eine Produktionsmaschine gehandelt hätte, auf der ich Probleme hätte.

Ich hasse das, wollte aber sichergehen, dass andere, die diesen Thread finden, wissen, dass ich keine Lösung habe. Dies wurde der Root-Crontab für einen nächtlichen Neustart um 4 Uhr morgens hinzugefügt:

0 4 * * * /sbin/shutdown -r +5
kross
quelle
1
Ich habe genau das gleiche Problem mit sshd.exe unter Cygwin auf Win7 ausgeführt. Ich frage mich, ob es ein plattformübergreifender Fehler in sshd ist.
Kev
2

Ich hatte das Problem hinter einem NAT mit ssh. Ich habe "mosh" mit ssh-Optionen ausprobiert und alles funktioniert einfach perfekt. Installieren Sie mosh

Juan Zamora
quelle
1
Ich empfehle , diese Antwort zu bearbeiten , um sie mit spezifischen Details zu erweitern. (Siehe auch Wie schreibe ich eine gute Antwort ?, um allgemeine Hinweise zu erhalten, welche Arten von Antworten auf AskUbuntu als am wertvollsten gelten.)
David Foerster
1

Ich hatte Gnome-Keyring-Daemon Freeze auf mir bei 100% CPU auf Ubuntu 18.04 sitzen.

sudo killall -9 gnome-keyring-daemon

Behoben. ...Zur Zeit

Dagelf
quelle
Verdammt! total für mich auch gearbeitet!
Nicholas DiPiazza