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

autossh работает так, как ожидалось установкой systemd при сбое загрузки

Поэтому я настраиваю свои переменные ssh для создания обратного туннеля в ~ / .ssh / config и вызываю хост tunnel_reverse. Я протестировал следующую команду для создания постоянного туннеля с помощью autossh, и она сработала так, как ожидалось:

    autossh -M 0 -N tunnel_reverse

Мне удалось подключиться к удаленному компьютеру с ноутбука после создания обратного туннеля удаленного хоста. Однако, когда я попытался настроить служебный файл, чтобы он мог автоматически запускаться при загрузке с systemd, это не сработало. Вот созданный мной файл /etc/systemd/system/tunnel.service:

    [Unit]
    Description=AutoSSH to reverse tunnel
    After=network.target

    [Service]
    Environment="AUTOSSH_GATETIME=0"
    ExecStart=/usr/bin/autossh -M 0 -v -N tunnel_reverse

    [Install]
    WantedBy=multi-user.target

поэтому я начал это с

    systemctl daemon-reload
    systemctl restart tunnel.service
    systemctl status tunnel.service

При просмотре журнала состояния кажется, что есть ошибка, которая гласит:

    debug1: Server host key: blah blah blah
    debug1: read_passpphrase: can't open /dev/tty: No such device or address
    Host key verification failed.
    ssh exited with error status 255; restarting ssh

Где я неправ?

Похоже, сеанс ssh, запущенный systemd, ищет пароль. Я предполагаю, что когда вы запускаете autossh вручную, он использует аутентификацию с открытым ключом, и что открытый ключ хранится в домашнем каталоге пользователя, который его выполняет (ваша ссылка на ~ / .ssh не говорит, какой домашний каталог пользователя это ). Autossh, выполняемый systemd, должен быть запущен от имени того же пользователя и иметь доступ к тому же каталогу .ssh, иначе он не сможет использовать ту же комбинацию имени пользователя и пароля.

Вы можете указать имя пользователя, которое должна запускать служба, добавив User= директива к Service раздел файла tunnel.service.