Наша установка выглядит следующим образом; - 2 сервера Tomcat, на которых размещены сайты - 1 балансировщик нагрузки - SSH-соединение с клиентским сервером, который содержит базу данных
Этот подход работал нормально, за исключением одного клиента, у которого туннель SSH не работал постоянно. Первоначально соединение SSH периодически прерывалось на проблемном сервере. Чтобы исправить это, я добавил ServerAliveInterval и ServerAliveCountMax, а также ClientAliveInterval и ClientAliveCountMax. Соединение продолжалось несколько дней, но затем на сервере клиента произошел сбой, и соединение было разорвано. Этот сбой сервера был связан с туннелем SSH, но я не уверен, что это так. Файл tunnel.bat был следующим:
:loop
ECHO OFF
echo y | plink.exe -ssh -R 24011:localhost:1433 connect@testsite1.fern.io -pw PasswordHereButI'mNotTelling
ping -n 10 -w 1 127.0.0.1>nul
REM ping -n 10 -w 1 127.0.0.1
goto loop
Изменил loglevel на 3 и получил следующий результат:
Jun 10 11:55:09 Phobos sshd[18092]: debug1: server_input_global_request: rtype tcpip-forward want_reply 1
Jun 10 11:55:09 Phobos sshd[18092]: debug1: server_input_global_request: tcpip-forward listen localhost port 24011
Jun 10 11:55:09 Phobos sshd[18092]: debug3: channel_setup_fwd_listener: type 11 wildcard 0 addr NULL
Jun 10 11:55:09 Phobos sshd[18092]: debug3: sock_set_v6only: set socket 8 IPV6_V6ONLY
Jun 10 11:55:09 Phobos sshd[18092]: debug1: Local forwarding listening on ::1 port 24011.
Jun 10 11:55:09 Phobos sshd[18092]: debug2: fd 8 setting O_NONBLOCK
Jun 10 11:55:09 Phobos sshd[18092]: debug3: fd 8 is O_NONBLOCK
Jun 10 11:55:09 Phobos sshd[18092]: debug1: channel 1: new [port listener]
Jun 10 11:55:09 Phobos sshd[18092]: debug1: Local forwarding listening on 127.0.0.1 port 24011.
Jun 10 11:55:09 Phobos sshd[18092]: debug2: fd 9 setting O_NONBLOCK
Jun 10 11:55:09 Phobos sshd[18092]: debug3: fd 9 is O_NONBLOCK
Jun 10 11:55:09 Phobos sshd[18092]: debug1: channel 2: new [port listener]
Там гораздо больше, откуда это взялось, и будет добавляться больше по запросу, но у этого блока был тот же идентификатор [18092], поэтому я подумал, что это хорошее начало. Затем с моим боссом мы использовали C # для создания ssh-соединения. Это снова сработало, но нам сразу же позвонили и сказали, что сервер снова упал.
Может ли кто-нибудь указать мне, был ли туннель SSH причиной сбоя сервера. Я думаю, есть ряд возможных проблем / причин; - Память сервера близка к пику (в настоящее время используется 15 из 16 ГБ) - netstat показывает соединения в состоянии close_wait и т. Д. - конфликт с sqlservr.exe с использованием порта 1433
Мне снится полный кошмар с туннелем SSH. Время от времени мы пытались исправить эту проблему в течение более трех недель, но до сих пор не нашли решения, поэтому, если кто-то может помочь, я навсегда останусь в вашем долгу.
Я бы серьезно подумал о выделенном VPN-соединении (аппаратном или программном) для этого - постоянный SSH-туннель чрезвычайно опасен и подвержен сбоям / проблемам, как вы выяснили.
Однако если вы действительно хотите сохранить туннель SSH, вы можете использовать автосш чтобы инициировать соединение с сервера Linux. Я не уверен, доступны ли сборки Windows (в вашем вопросе упоминается .exe, поэтому я предполагаю, что Windows является частью вашей установки).