所以我设置我的sshvariables在〜/ .ssh / config中做一个反向隧道,并调用主机tunnel_reverse。 我testing了下面的命令,用autossh创build一个持久的隧道,它的工作方式和预期的一样:
autossh -M 0 -N tunnel_reverse
在远程主机反向隧道创build后,我可以通过笔记本电脑连接到远程计算机。 但是,当我试图设置一个服务文件,所以它可以自动启动与systemd启动,它不会工作。 这里是我创build的/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
我哪里做错了?
看起来像由systemd启动的ssh会话正在寻找密码。 我假设,当你手动运行autossh它使用公钥authentication,并且公钥被存储在执行这个的用户的主目录中(你对〜/ .ssh的引用不会说哪个用户的主目录是)。 systemd执行的autossh应该作为同一个用户运行,并且可以访问相同的.ssh目录,否则将无法使用相同的用户名/密码组合。
您可以通过将User=指令添加到tunnel.service文件的Service部分来指定服务应该运行的User=名。