Autossh 使用 sudo 运行时(或从 upstart 运行时)要求输入密码

Autossh 使用 sudo 运行时(或从 upstart 运行时)要求输入密码

我有一份新贵的工作/etc/init/tunnel.conf

description "SSH Tunnel"

start on (net-device-up IFACE=eth0)
stop on runlevel[016]

respawn

exec autossh -nNT -o ServerAliveInterval=15 -R 12345:localhost:22 myuser@myserver

当我看到/var/log/upstart/tunnel.log

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).

但如果我尝试从终端

autossh -R 12345:localhost:22 myuser@myserver

它无需我输入密码即可连接到我的服务器(我已复制了 SSH 密钥)

当我使用以下命令运行它时sudo

sudo autossh -R 12345:localhost:22 myuser@myserver

它要求我输入 myserver 密码,所以我猜这是我在 upstart 作业中遇到的问题。为什么当我以 root 身份运行 SSH 时,它会要求我输入密码?

答案1

autossh被调用时须藤或 init 进程, autossh使用由以下程序提供的identity/ssh-keys文件用户(例如/root/.ssh/sshkeys)。当您尝试autossh从终端运行时,也许您使用非根用户。因此,autossh使用该用户提供的identity/ssh-keys文件(例如/home/non-root/.ssh/sshkeys)。

为了获得预期的行为,您可以在中提供身份文件tunnel.conf。为此,将最后一行修改为

exec autossh -nNT -i /home/non-root/.ssh/sshkeys -o ServerAliveInterval=15 -R 12345:localhost:22 myuser@myserver

更多信息使用 Ubuntu Upstart 进行 Autossh

相关内容