Linux使用autossh比较简单,centos/ubuntu只需要yum/apt-get install autossh即可。
目前windows使用autossh都必须安装cygwin软件。我也是在安装好这个软件的前提下,再使用autossh服务,配置开机自启动脚本的。(目前我只知道这种方法,如果有小伙伴知道windows如何不使用cygwin软件,也能使用autossh,欢迎在下方留言告知,本人也是小菜鸡一枚)
本篇博客不讲述如何安装cygwin软件。
cygwin官网:https://www.cygwin.com/
安装参考博客:http://tutorialspots.com/how-to-create-ssh-tunnel-on-windows-by-using-autossh-2984.html
在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp路径下创建后缀名为vbs的文件,名字自拟。该路径下的文件会跟随系统开机自动运行。文件内容如下:
Dim objShell
Set objShell = WScript.CreateObject ("WScript.shell")
objShell.Run "C:\autostart.sh /start",0
Set objShell=Nothing
第一行:定义objShell变量
第二行:创建WScript.shell对象,赋值给objShell变量
第三行:执行run命令。C:\autostart.sh指存放autossh命令的sh脚本文件(这里我创建的是autostart.sh)。参数0指窗口隐藏运行。
第四行:释放变量。
文件保存后,如果电脑出现警告提示有程序正在加入开机启动项,要选择允许。
在电脑任意位置创建后缀名为sh的脚本,名字自拟。绝对路径添加到第一步创建的vbs文件中,让开机运行vbs文件,从而执行该脚本。脚本内容如下(以我的autossh反向代理为例:)
autossh -fCNR 3700:localhost:22 user@ip
autossh命令成功运行的前提是ssh免密登录。由于autossh服务是基于cygwin的,所以公钥文件要使用xxx/cygwin64/home/用户名/.ssh路径下的id_rsa文件。
前两步执行完成后,重启电脑后,会弹出窗口让你选择运行这个sh文件的程序。因为该vbs文件代码没有指定程序来运行sh脚本,所以我们需要设定默认打开方式。右键sh文件,选择属性,选择更改打开方式,在这台电脑上查找其他应用,选择cygwin64/bin路径下的sh.exe。
设置完毕。重启后autossh保持后台运行,没有弹窗。再也不用担心服务器重启ssh连接断开了。