autossh 按照 systemd 预期工作,但启动设置失败

autossh 按照 systemd 预期工作,但启动设置失败

因此,我在 ~/.ssh/config 中设置了 ssh 变量以建立反向隧道,并将主机命名为 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

我哪里做错了?

答案1

看起来 systemd 启动的 ssh 会话正在寻找密码。我假设当您手动运行 autossh 时,它使用公钥身份验证,并且公钥存储在执行此操作的用户的主目录中(您对 ~/.ssh 的引用并未说明它是哪个用户的主目录)。systemd 执行的 autossh 应该以同一用户身份运行并有权访问相同的 .ssh 目录,否则它将无法使用相同的用户名/密码组合。

您可以通过在tunnel.service 文件的部分添加User=指令来指定服务应运行的用户名。Service

相关内容