Kết nối SSH mới bắt đầu bị treo (không từ chối hoặc chấm dứt) sau một ngày hoặc lâu hơn trên máy chủ Ubuntu 13.04


31

Gần đây, chúng tôi đã nâng cấp máy chủ từ máy chủ 12.04 LTS lên 13.04. Tất cả đều tốt, kể cả sau khi khởi động lại. Với tất cả các gói được cập nhật, chúng tôi bắt đầu thấy một vấn đề lạ, ssh hoạt động trong một ngày hoặc lâu hơn (không rõ ràng về thời gian) sau đó yêu cầu treo SSH sau đó (không thể ctrl + c, không có gì).

Nó lên và phục vụ lưu lượng máy chủ web, vv

Cổng 22 đang mở (ips vv được thay đổi một chút để đăng):

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

Đây là 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: ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,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: ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-rsa,ssh-dss-cert-v01@openssh.com,ssh-dss-cert-v00@openssh.com,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,rijndael-cbc@lysator.liu.se
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,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib
debug2: kex_parse_kexinit: none,zlib@openssh.com,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,rijndael-cbc@lysator.liu.se
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,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com
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 no-more-sessions@openssh.com
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

Tôi có thể khó khởi động lại (chỉ màn hình mac ở vị trí đó) và nó sẽ lại có thể truy cập được. Điều này bây giờ xảy ra mỗi lần. Điều bắt buộc là tôi phải sắp xếp nó. Điều kỳ lạ là nó cư xử ban đầu sau đó bắt đầu treo sau vài giờ. Tôi đã đăng nhập nhật ký trước đó và không có gì nổi bật.

Từ auth.log, tôi có thể thấy rằng nó đã cho phép tôi vào, nhưng tôi vẫn không nhận được gì về phía khách hàng:

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)

CẬP NHẬT:

Vẫn xảy ra ngay cả sau khi thiết lập UseDNS novà bình luận#session optional pam_mail.so standard noenv

Đây dường như không phải là vấn đề liên quan đến mạng / dns, vì tất cả các dịch vụ chạy trên máy đều phản hồi nhanh và dễ truy cập hơn bao giờ hết, ngoại trừ sshd.

Bất kỳ suy nghĩ về nơi bắt đầu?


Tôi đã có một vấn đề tương tự một lần và tôi đã có thể giải quyết nó, nhưng tôi không nhớ làm thế nào. Đó là một vài năm trước. Có một vài cài đặt bộ đệm trong /etc/sysctl.conf, tôi nghĩ vậy. Ngoài ra, khởi động lại "mạng" đã sửa lỗi treo, nhưng rõ ràng đó không phải là một giải pháp. Đó không phải là một câu trả lời, nhưng có lẽ nó có thể là một điểm khởi đầu. Chúc may mắn nào :)
Jo-Erlend Schinstad

Tôi đang vô hiệu hóa motdnội dung được tham chiếu từ bài đăng này để thử và đảm bảo rằng đó không phải là vấn đề.
kross

Nó chỉ xảy ra một lần nữa, vì vậy nó chắc chắn không motdliên quan.
kross

Tôi không thể tìm thấy bất kỳ đề nghị khác. Mặc dù tôi không nghĩ đây là vấn đề, tôi muốn loại bỏ ít nhất một vấn đề tiềm ẩn. Thêm UseDNS novào /etc/ssh/sshd_config.
kross

1
Vẫn xảy ra, rất thích đặt một bounty về vấn đề này nhưng chỉ có điểm stackoverflow ...
kross

Câu trả lời:


30

Từ trang SshAccess trên wiki tài liệu GNU Savannah :

Một vấn đề có thể phát sinh khi bạn đang cố gắng kết nối từ phía sau bộ định tuyến NAT bằng OpenSSH. Trong quá trình thiết lập phiên, sau khi mật khẩu được cung cấp, OpenSSH sẽ đặt trường TOS (loại dịch vụ) trong datagram IP. Một số bộ định tuyến được biết là bị sặc về điều này. Hiệu quả là phiên của bạn bị treo vô thời hạn sau khi bạn cho mật khẩu. Đây là ví dụ đầu ra từ một phiên ssh như vậy:

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

và từ đây vào phiên treo.

Cách khắc phục là làm cho ssh gửi tất cả lưu lượng truy cập của nó qua netcat, vì netcat sẽ không đặt trường TOS. Để làm việc này, bạn cần cài đặt netcat. Bạn có thể kiểm tra điều này bằng cách nhập vào dòng lệnh:

user@localhost:~$ which nc

và nếu bạn nhận được một đường dẫn trở lại, như:

/bin/nc

sau đó bạn có thể đã cài đặt netcat. Đối với những người rất thận trọng, bạn cũng có thể phát hành:

user@localhost:~$ nc -h

và nhìn vào văn bản trợ giúp sắp tới. Nếu bạn không có netcat, bạn có thể tìm thấy nó tại http://netcat.sourceforge.net/ . Bạn cũng có thể muốn thử hệ thống đóng gói đi kèm với phân phối hệ điều hành của bạn.

Khi bạn thấy rằng bạn đã cài đặt netcat, hãy đưa ra lệnh sau để kiểm tra xem tuyến netcat có giải quyết được vấn đề của bạn không:

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

trong đó {tên người dùng} là tên đăng nhập savannah của bạn. Để đăng nhập thành công, bạn sẽ nhận được một đầu ra tương tự như thế này (không bị treo, tức là bạn sẽ nhận được lời nhắc sau đó):

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:~$

Nếu bạn thấy rằng thông tin đăng nhập của bạn hoạt động thông qua tuyến netcat, thì bạn có thể làm cho nó vĩnh viễn bằng cách thêm một lệnh vào tệp cấu hình ssh ~/.ssh/config(hoặc, nếu tệp đó không tồn tại, hãy tạo nó):

ProxyCommand nc %h %p

Dưới đây là một tệp cấu hình ssh ví dụ trong thư mục nhà của người dùng (/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

Bạn cũng nên đưa ra các bình luận, nếu không sáu tháng sau, bạn có thể thấy mình tự hỏi chỉ thị đó là gì ??

Bạn cũng có thể thêm chỉ thị này vào tệp cấu hình ssh toàn cầu ( /etc/ssh/ssh_config), nhưng thay đổi này sẽ là toàn hệ thống và không phải tất cả người dùng trên hệ thống của bạn đều đánh giá cao sự thay đổi đó.



Rực rỡ, cảm ơn vì đã giúp tôi ra khỏi đây. Phải là một cơn ác mộng để gỡ lỗi. Đối với bản ghi, điều này xảy ra với tôi khi tôi sử dụng một WiFi ngu ngốc cụ thể, vì vậy tôi đã sửa đổi ssh_confignhư sau: Match exec "iw dev | grep -q stupid_wifi_ssid" ProxyCommand nc %h %p
Florian Echtler

7

ssh -o IPQoS=0 x.acme.com sẽ báo cho openssh dừng cài đặt trường QoS đang bị nghẹt.


Giải quyết nó cho tôi. Điều thú vị là một máy khác trong mạng LAN của tôi không gặp phải vấn đề này. Tôi sẽ thử điều này, trước khi thử định tuyến netcat.
Dominykas Mostauskis

2

Vô lý như âm thanh này, cách giải quyết duy nhất tôi có tại thời điểm này là lên lịch khởi động lại hàng đêm. May mắn thay, cách giải quyết này chỉ được chấp nhận vì nó là một cỗ máy phát triển, nếu nó là một cỗ máy sản xuất tôi sẽ gặp rắc rối.

Tôi ghét điều này, nhưng muốn chắc chắn rằng những người khác tìm thấy chủ đề này biết tôi không có giải pháp. Đã thêm cái này vào root crontab để khởi động lại hàng đêm lúc 4 giờ sáng:

0 4 * * * /sbin/shutdown -r +5

1
Tôi đang gặp rắc rối chính xác với sshd.exe chạy dưới cygwin trên win7. Tôi tự hỏi nếu nó là một lỗi đa nền tảng trong sshd?
Kev

2

Tôi đã có vấn đề đằng sau một NAT với ssh. Tôi đã thử "mosh" với các tùy chọn ssh và mọi thứ hoạt động hoàn hảo. Cài đặt mosh


1
Tôi khuyên bạn nên chỉnh sửa câu trả lời này để mở rộng nó với các chi tiết cụ thể về cách thực hiện việc này. (Xem thêm Làm thế nào để viết một câu trả lời tốt? Cho lời khuyên chung về những gì sắp xếp các câu trả lời được coi là có giá trị nhất trên AskUbuntu.)
David Foerster

1

Tôi đã đóng băng gnome-keyring-daemon khi tôi ngồi ở CPU 100% trên Ubuntu 18.04.

sudo killall -9 gnome-keyring-daemon

Đã sửa nó. ... Bây giờ


chỉ trích! hoàn toàn làm việc cho tôi quá!
Nicholas DiP Square
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.