天涼好個秋.

折腾 Bash on Windows 开启 SSHD 并开机启动

14614 阅 0 评 IT手札

安装 Bash on Windows

  1. 在 控制面板\程序\程序和功能 启用或关闭 Windows 功能中勾选 适用于 Linux 的 Windows 子系统(Beta)
  2. 在设置中打开开发人员模式
  3. 重启电脑
  4. powershell 中输入
    lxrun /install /y
    
  5. 等待安装完成即可。

启动 Bash

可以使用开始菜单里的快捷方式 "Bash on Ubuntu on Windows",
也可以在运行中 输入 bash ~

安装常用的软件

sudo apt install subversion python3-pip && pip3 install you-get

设置 sshd

  • 重装openssh
    sudo apt-get remove openssh-server
    sudo apt-get install openssh-server
    
  • 修改 sshd 设置,添加以下配置到/etc/ssh/sshd_config
    AllowUsers yourusername
    PasswordAuthentication=yes
  • 重启 sshd
    sudo service ssh --full-restart
    

    不出意外使用 ssh 客户端应该可以链接上 Bash on windows 了。

自动启动 ssh

一旦关掉 bash.exe 进程,ssh 就无法连接了。
解决这个问题分三个步骤:

  1. 添加启动项,让 bash.exe 随机启动
  2. 使用命令 sudo service ssh start 启动 sshd
  3. 因为 sudo service ssh start 命令需要输入密码不能自动化,所以需要 visudo 来免除输入密码的操作。

理清思路接下来记录一些过程:

  1. 使用 vbs 启动隐藏窗口开启 bash 和 运行 sudo service ssh start

    set ws=wscript.createobject("wscript.shell")
    ws.run "C:\Windows\System32\bash.exe",0
    ws.run "C:\Windows\System32\bash.exe  -c 'sudo /usr/sbin/service ssh start'",0
  2. 运行 sudo visudo,添加如下配置

    toor ALL = (root) NOPASSWD: /usr/sbin/service

    其中 toor 是我的用户名。

  3. 添加vbs文件到windows 启动项,将 vbs 文件放入到如下目录下。
    %AppData%\Microsoft\Windows\Start Menu\Programs\Startup
  4. 重启,测试不出意外就可以连接上 ssh 了。

其他

  1. 错误 sshd: ../sysdeps/posix/getaddrinfo.c:2603: getaddrinfo: Assertion `IN6_IS_ADDR_V4MAPPED (sin6->sin6_addr.s6_addr32)' failed.
EOF