我正在使用 sshuttle 通过 ssh 跳转服务器自动路由一些流量。它运行良好,但在某些情况下,例如切换到另一个 Wifi 网络时,连接会中断,我必须手动重新启动 sshuttle。
是否可以以某种方式启动 sshuttle,使其在网络连接再次可用时自动重新启动?
我们已经建立了一个解决方法,until
循环重试直到再次连接,但我觉得这不对吗?
答案1
只需使用systemd
它,首先创建一个systemd
服务文件sshutle
sudo nano /etc/systemd/system/sshuttle.service
然后将其放入其中(将your_username
和替换ssh_jump_server
为您的 ssh 跳转服务器的地址,将另一个替换为您要路由的网络sshutle
)
[Unit]
Description=sshuttle tunnel
[Service]
Restart=always
User=<your_username>
Group=<your_username>
ExecStart=/usr/bin/sshuttle -r <ssh_jump_server> <local_network>
[Install]
WantedBy=multi-user.target
然后您可以保存并重新加载,systemd
sudo systemctl daemon-reload
然后启用我们的新sshuttle
服务在启动时启动,现在sshutle
服务在退出时自动重新启动,如果网络连接丢失,则sshutle
当连接再次工作时,服务将自动重新启动。