我有一份新贵的工作/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