SSH туннель в фоновом режиме

17

У меня есть процесс, который ожидает, что соединение через SSH-туннель выполняется правильно, и я использую следующую команду:

ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -N &

Я успешно запускал это в течение 8 месяцев, недавно нашему хостинг-провайдеру пришлось внести изменения в оборудование, чтобы обновить нашу машину, и обновил нашу машину новым ядром для Ubuntu. Он прошел путь от 4.8.3-x86_64-linode76 до 4.8.6-x86_64-linode78.

После множества проблем, нам пришлось обновить команду так:

ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -fN

При изучении документации ssh параметр -f

Запрашивает ssh перейти в фоновый режим непосредственно перед выполнением команды. Это полезно, если ssh собирается запрашивать пароли или парольные фразы, но пользователь хочет сделать это в фоновом режиме. Это подразумевает -n. Рекомендуемый способ запуска программ X11 на удаленном сайте - это что-то вроде ssh -f host xterm.

При исследовании команды bash для «&»

Поместите процесс в фоновый режим (см. Многозадачность в разделе «Промежуточное использование> Операционная система UNIX»).

Есть ли принципиальная разница в этих 2 командах?

develop4fun2011
источник

Ответы:

22

Да, есть. ssh &работает sshв фоновом режиме с самого начала. ssh -fзапускается sshна переднем плане, позволяя запрашивать пароли и т. д., и только после этого sshставит себя в фоновом режиме непосредственно перед выполнением запрошенной команды.

AlexP
источник
Есть ли у вас какие-либо подсказки, почему на новом сервере я был бы вынужден использовать ssh -f, а не ssh &. В дополнение к этому, звучит так, как будто ssh -f - лучший подход, согласитесь ли вы на это?
develop4fun2011
Может быть, в новой системе появился новый (или просто другой) ssh-клиент?
AlexP