autossh 按预期通过 systemd 设置启动失败

Ger*_*yon 5 ubuntu ssh ssh-tunnel systemd

所以我设置了我的 ssh 变量来在 ~/.ssh/config 中做一个反向隧道,并调用主机 tunnel_reverse。我测试了以下命令以使用 autossh 创建持久隧道,并且它按预期工作:

    autossh -M 0 -N tunnel_reverse
Run Code Online (Sandbox Code Playgroud)

创建远程主机反向隧道后,我能够从笔记本电脑连接到远程计算机。但是,当我尝试设置服务文件以便它可以在使用 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
Run Code Online (Sandbox Code Playgroud)

所以我开始了

    systemctl daemon-reload
    systemctl restart tunnel.service
    systemctl status tunnel.service
Run Code Online (Sandbox Code Playgroud)

查看状态日志,似乎有一个错误,内容如下:

    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
Run Code Online (Sandbox Code Playgroud)

我哪里做错了?

小智 3

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

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