Tại sao SSH động dẫn đến một số loại vòng lặp dẫn đến việc có quá nhiều tệp đang mở


2

Tôi muốn hiểu lý do tại sao máy khách SSH của tôi gây ra lỗi này:

channel 1017: open failed: connect failed: open failed
channel 1017: open failed: connect failed: Too many open files
channel 1017: open failed: connect failed: Too many open files
channel 1017: open failed: connect failed: Too many open files

Lý lịch:

Tôi có trình duyệt web được cấu hình để sử dụng localhost: 6162 làm proxy vớ và sử dụng SSH để cung cấp proxy này bằng cách sử dụng ssh -d6162 hostname.

Thông thường, điều này được kết nối với một máy chủ từ xa, và trong trường hợp đó, nó hoạt động như dự định. Nhưng một số trang web yêu cầu tôi kết nối từ quốc gia của mình, mà máy chủ của tôi thì không.

Vì không dễ để cấu hình lại Proxy trình duyệt mỗi khi tôi cần một trang web như vậy, tôi ngắt kết nối máy khách ssh và bắt đầu một cái mới với ssh -d6162 127.0.0.1

Về lý thuyết, điều này chỉ nên thay thế proxy mà trình duyệt nhìn thấy bằng một điểm cuối khác và tôi mong đợi nó sẽ hoạt động tương tự.

Tuy nhiên, đây không phải là trường hợp và thay vào đó, máy khách ssh bắt đầu ném lỗi 'quá nhiều tệp đang mở' và kết nối sẽ chết sau vài giây.

Nếu tôi bắt đầu ssh với -vvv, Tôi có thể thấy rằng ngay khi tôi khởi động nó, máy khách (ssh?) Tạo các kết nối cho đến khi đạt được các tệp mở tối đa:

debug1: channel 993: free: direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38054 to 127.0.0.1 port 34636, nchannels 24
debug3: channel 993: status: The following connections are open:
  #993 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38054 to 127.0.0.1 port 34636 (t4 r989 i0/0 o3/0 fd 999/999 cc -1)
  #994 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38056 to 127.0.0.1 port 34636 (t4 r990 i0/0 o3/0 fd 1000/1000 cc -1)
  #995 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38058 to 127.0.0.1 port 34636 (t4 r991 i0/0 o3/0 fd 1001/1001 cc -1)
  #996 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38060 to 127.0.0.1 port 34636 (t4 r992 i0/0 o3/0 fd 1002/1002 cc -1)
  #997 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38062 to 127.0.0.1 port 34636 (t4 r993 i0/0 o3/0 fd 1003/1003 cc -1)
  #998 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38064 to 127.0.0.1 port 34636 (
debug1: channel 994: free: direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38056 to 127.0.0.1 port 34636, nchannels 23
debug3: channel 994: status: The following connections are open:
  #994 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38056 to 127.0.0.1 port 34636 (t4 r990 i0/0 o3/0 fd 1000/1000 cc -1)
  #995 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38058 to 127.0.0.1 port 34636 (t4 r991 i0/0 o3/0 fd 1001/1001 cc -1)
  #996 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38060 to 127.0.0.1 port 34636 (t4 r992 i0/0 o3/0 fd 1002/1002 cc -1)
  #997 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38062 to 127.0.0.1 port 34636 (t4 r993 i0/0 o3/0 fd 1003/1003 cc -1)
  #998 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38064 to 127.0.0.1 port 34636 (t4 r994 i0/0 o3/0 fd 1004/1004 cc -1)
  #999 direct-tcpip: listening port 34636 for 127.0.0.1 port 34636, connect from 127.0.0.1 port 38066 to 127.0.0.1 port 34636

Điều này diễn ra cho đến khi đạt được ulimit cho các tập tin.
Tôi nghĩ rằng tôi đang vô tình tạo ra một loại vòng lặp để mọi kết nối mà trình duyệt đang tạo đang tạo một kết nối khác, đó là tạo một kết nối khác đang tạo kết nối khác, v.v.

Một lần nữa, điều này chỉ xảy ra với một động lực để localhost, trong trường hợp sử dụng thông thường của tôi kết nối với một máy chủ từ xa, nó hoạt động hoàn hảo.

máy khách và máy chủ ssh:
OpenSSH_7.5p1 Debian-10, OpenSSL 1.0.2l 25 May 2017

trình duyệt: Google Chrome 61.0.3163.91

cấu hình trình duyệt:

google-chrome --proxy-server="socks5://localhost:6162" --host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE localhost, EXCLUDE 192.168.178.0/24" --proxy-bypass-list="127.0.0.1:3000,127.0.0.1,localhost:3000,localhost,192.168.178.0/24"

Bất cứ ai có thể tái tạo điều này? Có lời giải thích nào không?

P.S. Như thường lệ, trong khi viết điều này, tôi nhận ra rằng trình duyệt có thể cố gắng truy cập proxy tại localhost thông qua proxy, nhưng điều đó không có ý nghĩa gì, phải không?

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.