Windows auto-start for remote setup

date
Mar 28, 2022
slug
windows-auto-start
status
Published
tags
Windows
Environment
summary
用于远程的 Windows 10 + WSL2 自启动配置
type
Post

Update Apr 21, 2022

已放弃,frp 工具在拨号/网络不稳定情况下非常容易出现以下情况:
login to server failed: i/o deadline reached i/o deadline reached
 

Introduction

解放双手 —
Windows 在不登陆账号前提下, 自启动完成:
  1. 自动拨号(auto-dial-up)
  1. 自启动 WSL ssh
  1. 自启动 frpc 用于内网穿透: 微软 MRD (3389) 和 SSH (22)
适用于除断电外大多数场景, frp 参考该文

Main

环境: Frp v0.40.0

自动化基本思路

  1. 写 .bat 文件执行操作步骤;
  1. 添加计划任务用于开机自启动
不清楚的可以参考这里

具体配置

  • auto-dial-up
    • 自动拨号, 支持重连
      auto-dial-up.bat
      自动拨号: rasdial 依次输入拨号名、账号、密码
      @echo off
      :start
      ping -n 2 114.114.114.114 | find "TTL=" >nul
      if errorlevel 1 (
      rasdial BC_Name BC_Account BC_Password
      )
      TIMEOUT 1
      goto:start
  • auto-ssh
    • 首先需要通过 wsl --list --all 查询 WSL 名称;
      之后写 .bat 文件 ( 本文名称为 Ubuntu ), 用户需要注意下
      wsl -d Ubuntu -u root -e /etc/init.d/ssh start
  • auto-fpr
    • frpc.ini 配置
      [common]
      server_addr = REMOTE
      server_port = 7000
      
      [ssh]
      type = tcp
      local_ip = 127.0.0.1
      local_port = 22
      remote_port = 6000
      
      [mrd]
      type = tcp
      local_ip = 127.0.0.1
      local_port = 3389
      remote_port = 6008
      auto-frpc.bat, 我的这个文件在当前目录, 其他目录则作相应调整
      @echo off
      if "%1" == "h" goto begin
      mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
      
      :begin
      frpc.exe -c frpc.ini
      goto begin

配置计划任务

如图所示, 我创建了三个相应的 auto-start 任务
notion image
添加方式为: [计算机管理>系统工具>任务计划>添加基础任务]
notion image
任务设置为: 系统启动时触发、不管用户是否登陆、以最高权限启动. 期间会要求输入密码
 
notion image

注意

计划任务里面不能同时执行, 所以需要有先后顺序, 采用 task delay 的方式实现, 具体在[事件>修改触发器]
notion image
顺序为:
  1. auto-dial-up
  1. auto-ssh 延迟5s
  1. auto-fpr 延迟10s

遇到的问题

  • “端口占用”问题 [ssh] start error: port already used
    • 排查后感觉可能还是 Frp 自身问题, 解决方式是 frpc 换一个输出端口, [] 内的名字不需要改, 如下 :
      ...
      [ssh]
      type = tcp
      local_ip = 127.0.0.1
      local_port = 22
      remote_port = 6000 # Change this port
      ...

Reference

  1. WSL 的基本命令 https://docs.microsoft.com/zh-cn/windows/wsl/basic-commands
  1. win10宽带断线如何自动重拨? - 小小小小一鸟的回答 - 知乎 https://www.zhihu.com/question/59449991/answer/522964674
  1. WSL2 配置SSH 设置开机自启https://blog.csdn.net/qq_30060469/article/details/118580444
  1. Windows 下 Frp 设置开机自动启动 https://lo-li.cn/239
 

© Quinn Xen 2022