我希望通过 SSH 连接到防火墙后面的远程计算机。据我了解,这可以通过使用反向 ssh 隧道来实现。
所以我使用的命令是
ssh -N -f -R 0.0.0.0:1234:localhost:22 -i /home/username/.ssh/id_rsa.pub [email protected]
我的主要问题是我想在计算机启动时执行此命令,以便在重新启动后可以访问计算机。
我尝试通过在我的用户的 crontab 和/etc/cron
. 但是我遇到的问题是两个命令都要求输入密码。我已经创建了the id_rsa.pub
文件并将其发送到远程服务器,但它似乎仍然不起作用。
如果我已登录(例如通过 teamviewer),我可以运行命令并且不询问密码。如果我以 root ( sudo
) 身份运行命令,则会询问 rsa 文件的(空)密码。我怀疑我的问题在这里,即当 cron 执行命令时 ssh 要求输入密码并且命令挂起。
我尝试使用我的用户的 rsa 文件和 root 的 rsa 文件,但没有一个我设法连接。
只需添加“睡眠 60”;在您的 ssh 命令之前:
重新启动后,您的网络仍然处于关闭状态。
更好的解决方案可能是autossh:
“autossh 是一个启动 ssh 副本并对其进行监控的程序,如果它死亡或停止通过流量,则在必要时重新启动它。”
正如引用所说,这具有提供“始终在线”功能的额外好处。
组合多个来源后,我创建了一个服务来自动启动反向 ssh 通道。配置文件和必要的步骤可以 在这个存储库中找到
修复 SSH 问题
您无法使用公钥验证远程机器,您需要使用私钥来执行此操作。公钥必须在远程服务器上。如果您不确定,那么只需将公钥复制到远程服务器,如下所示:
然后使用私钥运行您的命令:
在启动时运行此命令
正如您已经使用 crontab 一样,然后运行
crontab -e
以编辑您的 cron。添加以下行以在计算机启动后执行该命令。