Ошибка 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

Как исправить?

Спасибо

0
задан 29 December 2015 в 02:40
2 ответа

You need a -N option so that is doesn't create an interactive shell.

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

From the man

 -N      Do not execute a remote command.  This is useful for just forwarding ports
3
ответ дан 4 December 2019 в 12:37

Обычно статус 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, но, вероятно, это порт, который вы выбрали.

0
ответ дан 4 December 2019 в 12:37

Теги

Похожие вопросы