Назад | Перейти на главную страницу

Ошибка Autossh со сценарием выскочки: ssh преждевременно завершился со статусом 0

Я создал следующий сценарий выскочки:

# autossh

description     "autossh connections"

start on started dbus
stop on (runlevel [06] or stopped dbus)

respawn
respawn limit 5 60 # respawn max 5 times in 60 seconds

script
    export AUTOSSH_PIDFILE=/var/run/autossh.pid
    export AUTOSSH_POLL=60
    export AUTOSSH_FIRST_POLL=30
    export AUTOSSH_GATETIME=0
    export AUTOSSH_DEBUG=1
    exec sudo -H -u pi -s autossh -M 0 -R remoteport:127.0.0.1:localport remoteuser@remote.host
    exec sudo -H -u pi -s autossh -M 0 -R remoteport2:127.0.0.1:localport2 remoteuser@remote.host
end script

но каждый раз после запуска я получаю такое сообщение об ошибке:

ssh exited prematurely with status 0

Как я могу это исправить?

Спасибо

Вам нужна опция -N, чтобы она не создавала интерактивную оболочку.

exec sudo -H -u pi -s autossh -M 0 -N -R remoteport:127.0.0.1:localport remoteuser@remote.host

От мужчины

 -N      Do not execute a remote command.  This is useful for just forwarding ports

Обычно статус 0 означает, что он был успешным, но в вашем случае я думаю, что это означает, что соединение было успешным, но закрыто, когда не удалось привязаться к указанным портам.

Если remoteport [2] является привилегированным портом 1-1024, вы не сможете выполнить привязку к нему, если вы не являетесь пользователем root. Вы можете изменить его, оставив параметр localport таким же.

Если что-то уже прослушивает порт, вы также не сможете к нему привязаться.

Первое, что вам следует сделать, если мои ответы выше не были на 100% точными, - это подключиться вручную с помощью ssh (удалив -M, добавив -v):

ssh -v -Rremoteport:127.0.0.1:localport remoteuser@remote.host

Кроме того, вы должны объединить оба оператора -R в одну команду ssh, вы не хотите запускать ее как две, если они оба подключаются к одному серверу, например:

ssh -v -Rremoteport:127.0.0.1:localport -Rremoteport2:127.0.0.1:localport2 remoteuser@remote.host

Посмотрите, какие ошибки вы получаете при выполнении обычной команды ssh, но, вероятно, это порт, который вы выбрали.