Я открываю SSH-туннель программно, с помощью:
sshpass -p "my_password" ssh -fN -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes remote_user@remote_server.tld -L 13306:127.0.0.1:3306 sleep 3
и работает как надо, но не закрывается после 3 секунд бездействия.
Я беру SSH PID и явно завершаю соединение, когда оно завершается; но я предпочитаю версию sleep
, которая может автоматически закрывать туннель.
Использовать для sshpass
поддержания туннеля открытым или я что-то делаю не так?
решение1
Ты используешь
-f
Запрашивает переход ssh в фоновый режим непосредственно перед выполнением команды. Это полезно, если ssh собирается запросить пароли или парольные фразы, но пользователь хочет, чтобы это было в фоновом режиме. Это подразумевает -n. Рекомендуемый способ запуска программ X11 на удаленном сайте — это что-то вроде ssh -f host xterm.
и
-N
Не выполнять удаленную команду. Это полезно только для переадресации портов.
Который переходит в фоновый режим перед выполнением команды (которая подавляется). Поэтому он остается в фоновом режиме. Он sleep
никогда не запускается и ждет, когда его остановят.