完全是为了方便自己折腾各种跳板写的,比如把家里的aria2、Jupyter Lab等等的映射到公网服务器,用systemd的话,可以实现自启动和出错自动重启,用autossh来替换生成脚本模版里的ssh也行,这个就看个人了。
实际就是这样的感觉~
![SSH Tunnel with systemd](/wp-content/uploads/2018/10/ssh_tunnel.png)
代码在ssh-tunnel
其实可以用一个文件来保存需要的环境变量,上图则是用了/etc/cattery.env这个文件。
环境变量的文件的内容的话,大概类似于下面~
USER=cocoa REMOTE_PORT=1234 LOCAL_PORT=8080 SSH_IDENTIFICATION_KEY=/home/cocoa/.ssh/id_rsa PUBLIC_SERVER=1.2.3.4
这样的话,在启动对应的systemd service之后,就会创建一个SSH tunnel,所有发往1.2.3.4:1234的包都会转发到localhost:8080上。
或者也可以只写一部分环境变量,剩余的在提示的时候输入就好。比如
USER=cocoa REMOTE_PORT=1234 LOCAL_PORT=8080 SSH_IDENTIFICATION_KEY=/home/cocoa/.ssh/id_rsa
然后当提示输入SSH connect host的时候, 就可以写上your_username@your_server_ip