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

autossh в фоновом режиме не работает

Я настроил туннель через autossh.

Это работает:

autossh -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

Я хочу запустить autossh в фоновом режиме. Кажется, легко использовать -f вариант.

Однако это не работает:

autossh -f -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

Autossh отлично работает в фоновом режиме, но кажется, что соединение ssh каждый раз прерывается. В / var / syslog я вижу несколько случаев:

autossh[3420]: ssh exited with error status 255; restarting ssh

Что я делаю не так? Есть предположение, что это как-то связано с аутентификацией через ключевой файл. Как я могу отладить это (добавление -v в параметры ssh, похоже, нигде не регистрируется).

Редактировать: Я получил несколько журналов ssh, используя параметр -y

/usr/bin/ssh[3484]: debug1: Next authentication method: publickey
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_rsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_dsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_ecdsa
/usr/bin/ssh[3484]: debug1: No more authentication methods to try.
/usr/bin/ssh[3484]: fatal: Permission denied (publickey).
autossh[3469]: ssh exited with error status 255; restarting ssh

Кажется, autossh не принимает мой файл с идентификацией (-i myIdFile) при использовании опции -f. Это почему?

(autossh 1.4c на Распиане)

Похоже, что когда autossh переходит в фоновый режим (опция -f), он меняет рабочий каталог, что означает, что относительные пути больше не работают. Или более конкретно: Автор введите абсолютный путь к вашему файлу id у вас наверняка все получится.

Я воссоздал сценарий, создав ключ без пароля в нестандартном месте:

~/$ mkdir test
~/$ cd test
~/test$ ssh-keygen -f test_id_rsa

Я просто дважды нажимаю Enter, чтобы сгенерировать ключ, не защищенный паролем.

Я скопировал новый ключ на свой сервер (который в настоящее время разрешает аутентификацию по паролю):

~/test$ ssh-copy-id -i test_id_rsa user@server

Сначала я подтвердил, что ключ работает с обычным ssh, затем с помощью autossh, как вы:

~/test$ ssh -i test_id_rsa user@server
~/test$ autossh -M 13000 -N -i test_id_rsa user@server
^C

Они оба работали нормально, поэтому я воссоздал вашу проблему:

~/test$ autossh -f -M 13000 -N -i test_id_rsa user@server

Это не сработало, и было написано следующее: /var/log/syslog:

autossh [2406]: ssh преждевременно завершился со статусом 255; автосш выход

Однако, изменив путь к ключевому файлу на абсолютный, он работал:

~/test$ autossh -f -M 13000 -N -i /home/user/test/test_id_rsa user@server

Нет ошибок в /var/log/syslog.

Не уверен, что происходит с -f, но вы также можете не использовать его:

nohup autossh -M 33201 -N -f -i myIdFile -R 33101:localhost:22 autossh@myhost.com &

Добавьте следующие параметры в SSH, чтобы обойти "Вы действительно хотите продолжить соединение (да / нет)?"

-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

Последняя команда будет в следующем формате:

autossh -f -M $BASE_PORT -N -R $LOCAL_PORT:$LOCALHOST:$REMOTE_PORT $USER@$SERVER -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no