之前的折腾过Windows下ssh的自动登录,比如这篇Windows下使用Xshell建立反向隧道,但是这个不能无交互的情况下自动连接(比如在连接新主机时),也就很难在服务中使用。解决方法还是得使用命令行版本。

OpenSSH其实是有Windows版本的,并且目前还在维护:https://github.com/PowerShell/Win32-OpenSSH。至于AutoSSH,还是得借助Cygwin。但是Cygwin的程序加上cygwin1.dll后是可以直接在Windows下运行的,所以不需要安装Cygwin附件的压缩包里也有ssh、AutoSSH以及所需的dll,可直接使用。可执行文件是32位的,但是Win10 64位实测可以使用。

AutoSSH的使用方法网上很多,这里需要注意的一点是,需要在使用时要指明ssh的路径,否则他只会在默认路径(/usr/bin/ssh)下寻找。Cygwin下访问Windows的文件需要借助/cygdriver,但是在没有完整的Cygwin环境下使用这个路径会有啥效果我也不知道。(我应该是试过的,但是忘了……)。把ssh.exe和autossh.exe放在同一个目录下,然后在命令行窗口下指定以下环境变量可解决这个问题:

set AUTOSSH_PATH=./ssh.exe

然后就可以正常使用AutoSSH了。另外,实测AutoSSH在一些情况下还是会自动退出,所以还是需要使用一个死循环来一直执行。目前把这些工作写在了一个bat文件里:

@echo off

:: 在这里更改你的设置
:: setting
set HOST="username@host.com"
set KEY_FILE="id_rsa_private"
set REMOTE_PORT=8180
set MONITOR_PORT=8280
set LOCAL_PORT=23 echo *** :LOOP echo [%HOST%] [%date% %time%] Autossh running...
set AUTOSSH_PATH=./ssh.exe
set AUTOSSH_LOGLEVEL=7
set "AUTOSSH_DEBUG="
autossh.exe -M %MONITOR_PORT% %HOST% ^
-i %KEY_FILE% -R 0.0.0.0:%REMOTE_PORT%:127.0.0.1:%LOCAL_PORT% -N ^
-o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" timeout 60 > NUL
goto LOOP echo [%HOST%] [%date% %time%] exited

需要建立反向隧道的时候,运行这个批处理就好。有需要的话,可以把这个批处理作为服务启动。把一个可执行的文件转为服务的软件我推荐这个:NSSM - the Non-Sucking Service Manager

附件:autossh-cygwin.rar

Windows下使用AutoSSH,并作为服务自启动(不用安装Cygwin)的更多相关文章

  1. windows下制作linux U盘启动盘或者安装优盘(转)

    windows下制作linux U盘启动盘或者安装优盘(转) Linux发行版排行榜:http://iso.linuxquestions.org/ [方案一]:UltraISO(不推荐,在Window ...

  2. Windows下Nginx+Web.py+FastCGI服务搭建

    在搭建之前,有必要了解下什么是fastcgi,但鉴于我自己也不大了解,这里就不搬门弄斧了,请参考各种百科和官网资料. 1.资源下载 python下载地址:戳这里webpy下载地址:戳这里flup下载地 ...

  3. Windows 下配置 Logstash 为后台服务

    到目前为止,logstash 没有给出官方的,在 windows 系统中作为后台服务运行的方式.本文将介绍如何使用第三方工具 nssm 让 logstash 作为后台服务运行在 windows 中.说 ...

  4. Windows下快速启动/关闭orcl服务

    大家都知道windows下绝大部分都是图形操作化,很少用命令来执行,例如启动.关闭orcl数据库服务时,一般情况都是在任务管理器(taskmgr.ctrl+shift+esc)或服务(services ...

  5. Python科学计算(二)windows下开发环境搭建(当用pip安装出现Unable to find vcvarsall.bat)

    用于科学计算Python语言真的是amazing! 方法一:直接安装集成好的软件 刚开始使用numpy.scipy这些模块的时候,图个方便直接使用了一个叫做Enthought的软件.Enthought ...

  6. windows下ipython的tab补全,只需安装pyreadline即可.

    运行ipython提示缺失模块 在windows下安装readline失败. 根据提示访问 https://urllib3.readthedocs.org/en/latest/security.htm ...

  7. windows下数据挖掘相关包numpy、pandas的安装

    安装Anaconda的绕道 这里介绍如何在windows下安装numpy/scipy/matplotlib/pandas/scikit_learn等数据分析相关包 相关环境: win7 64位 pyt ...

  8. 在windows下如何新建爬虫虚拟环境和进行scrapy安装

    Scrapy是Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改.Sc ...

  9. Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。

    测试过不行 使用服务启动后,tomcat运行时会抛出各种内存溢出错误,于是我第一时间想到的是去修改catalina.bat文件中的内存设置,但是然并卵,于是我又尝试不用服务,去使用startup.ba ...

随机推荐

  1. iOS高效开发之Xcode应用插件

    前言:本文非原创 文章摘自 www.cocoachina.com/industry/20130918/7022.html    古人云“工欲善其事必先利其器”,打造一个强大的开发环境,是立即提升自身战 ...

  2. DataTable 除去列中重复值

    DataTable dtPCI = dtblSourceData.DefaultView.ToTable(true, new string[] { "Server Cell PCI" ...

  3. android 密码输入通过复选框实现明文密文显示

    editText1.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//将文本框的内容以明文显示 edit ...

  4. Java--关于计算表达式中赋值的细节问题

    public class Test { public static void main(String[] args) { int t = 0; int p = 0; int q = 0; int ta ...

  5. Java集合源码分析(五)HashSet<E>

    HashSet简介 HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用null元素. HashSet源 ...

  6. Android 亮度调节

    最近在做一个App的设置项,亮度调节.真正做时,发现Android亮度调节比预想要复杂一些.其实目前网上已有不少这方面的资料,但有些博文具有一定误导性.在此将这块内容按照自己理解整理一下. 整体上看, ...

  7. Atom 备份神器 —— Sync Settings

    当 Atom 的扩展越装越多,配置也越来越偏离了系统默认设置时,一旦电脑重装后需要复原开发环境,这将是一件比较头疼的事,但今天发现一个扩展,可以解决这一问题,那就是「Sync Settings」,根据 ...

  8. 唯美!分享8款响应式的 WordPress 餐厅主题

    您是否拥有一个餐厅,酒吧,咖啡馆,小酒馆,比萨饼店?如果答案是肯定的,请确保您在网上也提供服务.为了使您的工作更轻松,我们选择了一些新的和独特的餐厅主题,覆盖了范围很广的食品企业.这些主题提供了很多很 ...

  9. Repeater分页代码

    //ASP.NET中的DataList和Repeater提供了简单快速的方法來显示,其间,我们可以使用<ItemTemplate>更是使我们能随心所欲的控制数据的排放样式! //.可惜的是 ...

  10. jQuery的document ready与 onload事件——你真的思考过吗?

    在进行实验和资料查询时,我遇到了几个关键问题: 1. window.onload到底是什么加载完触发? 2. body为什么会有onload事件? 3. 为什么是window.onload,而不是do ...