Поэтому я настраиваю свои переменные 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.