Назад | Перейти на главную страницу

Постоянное соединение SSH через Bash Script?

У меня два сервера OpenSolaris. На удаленном сервере есть база данных MySQL. MySQL настроен с пропуском сети; поэтому я не могу получить доступ к этой базе данных с первого сервера, просто используя имя хоста и порт.

У меня должен быть настроен туннель ssh для подключения к MySQL с локального сервера. Я могу сделать это с помощью простого: ssh -L 3350: localhost: 3306 user @ server и ключей SSH. Отлично работает.

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

Я создал небольшой сценарий на bash для создания соединения. Однако он просто подключается, завершает скрипт и теряет соединение ssh. Если я изменю сценарий для запуска команды на удаленном сервере и команды сна, он останется подключенным в течение X секунд. Затем я могу подключиться к MySQL. Однако я обязательно потеряю соединение через X секунд.

Есть ли у кого-нибудь предложения более элегантного способа сделать это? Есть ли способ использовать svcadm Solaris для создания соединения и его постоянного поддержания?

ОБНОВЛЕНИЕ: я обнаружил, что если я добавляю sleep X, а затем создаю соединение MySQL до истечения срока действия X, соединение ssh остается неограниченным. Однако это не очень стабильное решение. Если я потеряю соединение с базой данных, соединение ssh прервется, и я застряну, не имея возможности подключиться снова.

Вам нужна опция -N для OpenSSH. Например:

ssh -N -L 3350:localhost:3306 user@server &

Я думаю, вы можете попробовать ssh-copy-id - позволяет легко распространять пару ключей SSH pub / priv

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.75.10

Вы хотите взглянуть на такой инструмент, как autossh, который поддерживает работу туннеля ssh. Если он умирает, он автоматически воссоздает его.

Или, может быть, rstunnel, который делает почти то же самое, что и autossh -> http://sourceforge.net/projects/rstunnel/

Если вы хотите избежать накладных расходов на ssh, шифрование, аутентификацию и т. Д., Вы можете сделать что-то очень похожее с netcat (или nc). В сети есть много учебных пособий. Если вы начинаете с них и вам нужна более конкретная помощь, дайте мне знать.