后台的 autossh 不起作用

后台的 autossh 不起作用

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

这有效:

autossh -M 33201 -N -i myIdFile -R 33101:localhost:22 [email protected]

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

但这不起作用:

autossh -f -M 33201 -N -i myIdFile -R 33101:localhost:22 [email protected]

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

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

我做错了什么?我猜测这与通过密钥文件进行身份验证有关。我该如何调试这个问题(在 ssh 选项中添加 -v 似乎不会在任何地方记录)。

编辑: 我使用 -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)

答案1

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

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

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

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

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

~/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;autossh 正在退出

通过将密钥文件的路径更改为绝对路径,它可以起作用:

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

没有错误/var/log/syslog

答案2

不确定 -f 发生了什么,但您也可以使用 nohup :

nohup autossh -M 33201 -N -f -i myIdFile -R 33101:localhost:22 [email protected] &

答案3

将以下参数添加到 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

答案4

我遇到了一个问题,主机密钥指纹被重置并导致 255 错误。

尝试建立正常的 SSH 会话,通过将机器添加回已知主机来解决 autossh 的问题:

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[XXXXXXXXXXXXX]:22' (ED25519) to the list of known hosts.

systemctl status autossh.service在上述步骤后立即生效(重启后同样有效)。

相关内容