Den*_*nis 9 ssh cron openssh ssh-tunneling
我在 NAT 后面有一台 PC,它与我的 Digitalocean VPC 建立反向 SSH 连接。我利用这个反向 SSH 连接从家里登录到我的办公室 PC(我被授权这样做)并复制文件和做其他重要的事情。
虽然不常见,但我注意到我的办公室 PC 重新启动(由于电源故障等)并中断了它与我的 VPC 建立的反向 SSH 连接。在这种情况下,我无法从我的家用 PC 连接到我的办公室 PC。
我运行以下脚本,使反向连接 + 动态代理匿名我在办公室 PC 上生成的流量(因为我不需要共享浏览信息)。
autossh -CD 8080 -i digitalOcean -R 8081:localhost:22 root@IPofDigitalOceanPC
Run Code Online (Sandbox Code Playgroud)
重新启动后,我无法在办公室 PC 上再次运行 thsi 脚本,因为我不在那里。为了解决这个问题,我安装了以下 crontab。
注意:rev.sh
文件包含上述行。证书“digitalOcean”和 rev.sh 位于Ubuntu home
. 因此,当我./rev.sh
在我的 Ubuntu 终端中执行时,我获得了一个动态代理,并且还可以访问 ym DigitalOcean 服务器。这种方法100%有效。
但是,当我使用以下方法安装 chrontab 时,我的 ubuntu PC 永远不会创建动态代理。我可以看到这一点,因为当我从谷歌浏览器检查这个代理时,它说代理拒绝连接。
这是我作为 root cronejobs 尝试过的 cronejobs。我也以普通用户的身份尝试过这些,但它们仍然不起作用。
@reboot bash /home/user/rev.sh
@reboot /home/user/rev.sh
@reboot cd /home/user && ./rev.sh
Run Code Online (Sandbox Code Playgroud)
然后我在当前时间前几分钟安装了一个 chrontab 并等待它执行。
24 12 8 * * * bash /home/user/rev.sh
24 12 8 * * * /home/user/rev.sh
Run Code Online (Sandbox Code Playgroud)
这些也没有执行。
请帮助我发现我的错误。这个网站上有很多关于我的问题的类似问题。因此,我已经提到了很多答案,但似乎没有一个有帮助。
我不确定使用cron
在启动时运行脚本是否是个好主意。我看更适合另一种方法是创建一个SystemD服务,描述在这里。创建一个名为 的文件/etc/systemd/system/autossh.service
:
[Unit]
Description=Auto Reverse SSH
Requires=systemd-networkd-wait-online.service
After=systemd-networkd-wait-online.service
[Service]
ExecStart=/full/path/to/autossh -CD 8080 -i digitalOcean -R 8081:localhost:22 root@IPofDigitalOceanPC
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
然后以 root 身份运行以下命令:
systemctl enable autossh.service
Run Code Online (Sandbox Code Playgroud)
小智 2
您可以尝试以下几件事:
chmod +x rev.sh
Run Code Online (Sandbox Code Playgroud)
有时您的路径在启动时或通过 cronjobs 未完全设置,因此在我的系统上将 autossh 替换为完整路径
/usr/bin/autossh
Run Code Online (Sandbox Code Playgroud)
@reboot 主题取决于 cron 守护进程的启动时间,因此它可能会在其他子系统(网络?)启动并运行之前被调用
还有你的 crontab 示例:
24 12 8 * * * bash /home/user/rev.sh
Run Code Online (Sandbox Code Playgroud)
只会在每个月的8号调用。它有一个额外的字段。尝试
24 12 * * * /home/user/rev.sh
Run Code Online (Sandbox Code Playgroud)