Если не указана ни опция -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 используют оболочки, которые устанавливают и используют фиксированный порт по умолчанию.