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