autossh у фоновому режимі не працює


12

Я створив тунель через 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

Автосшш працює нормально у фоновому режимі, але, схоже, 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 на Raspian)


Навіщо взагалі використовувати autossh? Ви можете використовувати systemd для "перезавантаження при помилках". Я створив суть зі своїм рішенням: gist.github.com/guettli/…
guettli

Відповіді:


29

Схоже, коли автошшш падає на другий фон (опція -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.


приголомшливо, це працює.
henning77

Ти врятував мій день!
arno_v

2
Важливий параметр -N, інакше ви отримаєте "ssh вийшов зі статусом 0; вихід з автоматичного пошуку". Спасибі!
user30747

Підтверджено, що мені теж просто довелося додати шлях до файлу "id_rsa", наприклад: autossh -M 19001 -fN -y -i /home/pi/.ssh/id_rsa (спасибі @jmidgren)
Rich

4

Не впевнений, що відбувається з -f, але ви також не можете це зробити:

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

nohup працює для мене, навіть не вказуючи файл ключа.
valadil

nohupтакож працював для роботи autosshпід runitв Alpine Linux
Стюарт Cardall

0

Додайте наступні параметри до 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

це працює для мене.
bluebird_lboro

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