Що таке порт моніторингу за замовчуванням для автошшш?


2

Команда autossh має такий -Mваріант:

   -M port[:echo_port]

specifies the base monitoring port to use. Without the echo port, this port
and the port immediately above it ( port + 1) should be something nothing else
is using. autossh will send test data on the base monitoring port, and receive
it back on the port above. For example, if you specify "-M 20000", autossh will
set up forwards so that it can send data on port 20000 and receive it back on
20001. 

Крім того, ви можете вказати ту саму поведінку, використовуючи AUTOSSH_PORTзмінну оточення.

Моє запитання таке:

Якщо ні -Mпараметр, ні змінна env не вказано, який порт використовується для моніторингу? Або поведінка відключена? Документація незрозуміла.

Відповіді:


2

Якщо ні -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і виконує real autossh( /usr/lib/autossh/autossh). Цей виконуваний файл вимагає -M або в AUTOSSH_PORTіншому випадку він не запуститься.

Моя остаточна відповідь: немає порту моніторингу ванілі за замовчуваннямautossh . Ви повинні встановити AUTOSSH_PORTабо використовувати -M. Це незручно, звідси і обгортка. Ви можете мати або не мати його у вашому Linux. Можливо, деякі аромати Linux використовують обгортки, які встановлюють та використовують фіксований порт за замовчуванням.


-1

Це може бути будь-який невикористаний порт у віддаленій системі, однак він також повинен бути відкритим. Однак я не думаю, що для цього немає жодного "розумного" випадку використання, як тут задокументовано, ви також можете просто використовувати власні параметри SSH:

autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -L 5000:localhost:3306 user@randomhost.org

Це відключиться через 90 секунд без відповіді від сервера, і тоді AutoSSH автоматично підключиться.


1
Дякую, але я попросив порт за замовчуванням, якщо він дійсно не визначений.
Ендрю Айзенберг

Це не визначено, тому що це може бути буквально будь-який порт.
djsmiley2k
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.