![`ssh [...] sleep 3` (с sshpass) не закрывается никогда](https://rvso.com/image/95300/%60ssh%20%5B...%5D%20sleep%203%60%20(%D1%81%20sshpass)%20%D0%BD%D0%B5%20%D0%B7%D0%B0%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D0%BD%D0%B8%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0.png)
Я открываю 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
никогда не запускается и ждет, когда его остановят.