Если не указана ни опция -M ни переменная env, какой порт используется для мониторинга?
В моих нескольких тестах на клиенте Kubuntu случайные высокие порты использовались в диапазоне около (моя оценка) 30000-60000 . Сравните: эфемерный порт . Я имею в виду, что первый (port) был выбран случайным образом, второй был чуть выше него (port+1).
-M без правильного аргумента (autossh -M -- … или autossh -M foo …) завершается немедленно; он не печатает никаких ошибок, но статус выхода равен 1 .
autossh -M 0 … действительно отключает эту функцию.
Но…
Я попытался проанализировать источник и не нашел этой случайности. Тогда я обнаружил это:
$ type autossh
autossh is /usr/bin/autossh
$ file /usr/bin/autossh
/usr/bin/autossh: POSIX shell script, ASCII text executable
$ head -n 4 /usr/bin/autossh
#!/bin/sh
# little wrapper to choose a random port for autossh, falling back to $fallback_port
fallback_port="21021"
$ tail -n 1 /usr/bin/autossh
exec /usr/lib/autossh/autossh "$@"
$ file /usr/lib/autossh/autossh
/usr/lib/autossh/autossh: ELF 64-bit LSB executable, …
Это означает, что в Kubuntu у меня есть оболочка, которая случайным образом выбирает порт, если он не указан ни -M ни AUTOSSH_PORT . Я не публикую здесь полный код, но прочитал его: если оболочка не может случайно попасть в неиспользуемую пару портов (т.е. port и port+1) в 42 попытках, то в конце концов она пытается 21021 и 21022 ; Если эти порты не могут быть использованы, оболочка завершается с ошибкой.
Если обертка завершается успешно, она экспортирует первый порт как AUTOSSH_PORT и запускает настоящий autossh (/usr/lib/autossh/autossh). Этот исполняемый файл требует -M или AUTOSSH_PORT , иначе он не запустится.
Мой последний ответ: нет порта мониторинга по умолчанию для vanilla autossh. Вы должны установить AUTOSSH_PORT или использовать -M . Это неудобно, отсюда и обертка. Вы можете иметь или не иметь его в своем Linux. Возможно, некоторые разновидности Linux используют оболочки, которые устанавливают и используют фиксированный порт по умолчанию.