因此,我在 ~/.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