后台的autossh无法正常工作


12

我已经通过autossh建立了一条隧道。

这有效:

autossh -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

我想在后台运行autossh。使用该-f选项似乎很容易。

但是,这不起作用:

autossh -f -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

Autossh在后台正常运行,但是ssh连接似乎每次都失败。在/ var / syslog中,我看到以下多次出现:

autossh[3420]: ssh exited with error status 255; restarting ssh

我究竟做错了什么?一个大胆的猜测是它与通过密钥文件进行身份验证有关。我该如何调试(将-v添加到ssh选项似乎不在任何地方记录)。

编辑: 我使用-y选项得到了一些ssh日志

/usr/bin/ssh[3484]: debug1: Next authentication method: publickey
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_rsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_dsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_ecdsa
/usr/bin/ssh[3484]: debug1: No more authentication methods to try.
/usr/bin/ssh[3484]: fatal: Permission denied (publickey).
autossh[3469]: ssh exited with error status 255; restarting ssh

因此,-i myIdFile当使用-f选项时,autossh似乎不接受我的身份文件()。这是为什么?

(Raspian上的autossh 1.4c)


为什么要使用autossh?您可以将systemd用于“重启失败的东西”。我用解决方案创建了一个要点:gist.github.com/guettli/…–
guettli

Answers:


29

似乎当autossh降到后台(-f选项)时,它正在更改工作目录,这意味着相对路径不再起作用。或更具体的说:通过输入id文件的绝对路径,您可能会成功。

我通过在非默认位置创建没有密码的密钥来重新创建场景:

~/$ mkdir test
~/$ cd test
~/test$ ssh-keygen -f test_id_rsa

我只需按两次Enter键即可生成不受密码保护的密钥。

我将新密钥复制到我的服务器(当前允许密码认证):

~/test$ ssh-copy-id -i test_id_rsa user@server

首先,我确认密钥在使用常规ssh,然后像您一样使用autossh:

~/test$ ssh -i test_id_rsa user@server
~/test$ autossh -M 13000 -N -i test_id_rsa user@server
^C

他们俩都工作正常,所以我重新创建了您遇到的问题:

~/test$ autossh -f -M 13000 -N -i test_id_rsa user@server

这不起作用,并且将以下内容写入/var/log/syslog

autossh [2406]:ssh过早退出,状态为255;自动退出

通过将密钥文件的路径更改为绝对路径,虽然可以:

~/test$ autossh -f -M 13000 -N -i /home/user/test/test_id_rsa user@server

中没有错误/var/log/syslog


太棒了,这可行。
henning77

你救了我的一天!
arno_v 2014年

2
-N选项很重要,否则您将获得“状态为0退出ssh;状态为autossh退出”的信息。谢谢!
user30747

确认后,我也只需将路径添加到“ id_rsa”文件中,如下所示:autossh -M 19001 -fN -y -i /home/pi/.ssh/id_rsa(感谢@jmidgren)
丰富

4

不知道-f发生了什么,但您也可以不对它进行处理:

nohup autossh -M 33201 -N -f -i myIdFile -R 33101:localhost:22 autossh@myhost.com &

即使没有指定密钥文件,nohup都可以为我工作。
valadil 2014年

nohup还曾为运行autosshrunit高山的Linux
斯图尔特Cardall

0

将以下参数添加到SSH以绕过“您确定要继续连接(是/否)吗?”

-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

最终命令将采用以下格式:

autossh -f -M $BASE_PORT -N -R $LOCAL_PORT:$LOCALHOST:$REMOTE_PORT $USER@$SERVER -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

这个对我有用。
bluebird_lboro

StrictHostKeyChecking=no除非您要连接到已知良好的临时玩具,否则请不要启用它,而您选择是懒惰。
Dolph
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.