2

Я хотел бы понять, почему мой SSH-клиент выдает мне эту ошибку:

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

Фон:

Мой веб-браузер настроен на использование localhost:6162 в качестве прокси-сервера socks и использую SSH для предоставления этого прокси с помощью ssh -d6162 hostname .

Обычно это связано с удаленным сервером, и в этом случае он работает как задумано. Но некоторые веб-сайты требуют от меня подключения из моей собственной страны, которой не является мой сервер.

Поскольку нелегко переконфигурировать прокси-сервер браузера каждый раз, когда мне нужен такой сайт, я отключаю ssh-клиент и запускаю новый с ssh -d6162 127.0.0.1

Теоретически, это должно просто заменить прокси, который видит браузер, на другую конечную точку, и я ожидаю, что он будет вести себя так же.

Однако это не так, и вместо этого клиент ssh начинает выдавать ошибку «слишком много открытых файлов», и через несколько секунд соединение прерывается.

Если я запускаю ssh с -vvv , я вижу, что, как только я его запускаю, (ssh?) клиент генерирует соединения до достижения max-open-files:

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

Это продолжается до тех пор, пока не будет достигнут предел файлов.
Я думаю, что непреднамеренно создаю какой-то цикл, так что каждое соединение, которое создает браузер, создает другое соединение, которое создает другое соединение, которое создает другое соединение и т.д.

Опять же , это происходит только с dynamicforward на localhost в моем нормальном использовании случае подключение к удаленному серверу он работает отлично.

клиент и сервер ssh:
OpenSSH_7.5p1 Debian-10, OpenSSL 1.0.2l 25 May 2017

браузер: Google Chrome 61.0.3163.91

Конфигурация браузера:

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"

Кто-нибудь может воспроизвести это? Любое объяснение?

PS Как обычно, когда я писал это, мне пришло в голову, что браузер может попытаться получить доступ к прокси на локальном хосте через сам прокси, но это не имеет никакого смысла, не так ли?

0