折腾 Bash on Windows 开启 SSHD 并开机启动
安装 Bash on Windows
- 在 控制面板\程序\程序和功能 启用或关闭 Windows 功能中勾选 适用于 Linux 的 Windows 子系统(Beta)
- 在设置中打开开发人员模式
- 重启电脑
- powershell 中输入
lxrun /install /y
- 等待安装完成即可。
启动 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 就无法连接了。
解决这个问题分三个步骤:
- 添加启动项,让 bash.exe 随机启动
- 使用命令
sudo service ssh start
启动 sshd - 因为
sudo service ssh start
命令需要输入密码不能自动化,所以需要 visudo 来免除输入密码的操作。
理清思路接下来记录一些过程:
-
使用 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
-
运行
sudo visudo
,添加如下配置toor ALL = (root) NOPASSWD: /usr/sbin/service
其中 toor 是我的用户名。
- 添加vbs文件到windows 启动项,将 vbs 文件放入到如下目录下。
%AppData%\Microsoft\Windows\Start Menu\Programs\Startup
- 重启,测试不出意外就可以连接上 ssh 了。
其他
- 错误 sshd: ../sysdeps/posix/getaddrinfo.c:2603: getaddrinfo: Assertion `IN6_IS_ADDR_V4MAPPED (sin6->sin6_addr.s6_addr32)' failed.
- 原因是 ipv6 的问题,修改sshd_config配置添加 ListenAddress 0.0.0.0 即可
- sshd fail because getaddrinfo
EOF
评论框君很顽皮,需要科学上网才能看到哦!~
关注微信公众号(MarIxs)也能联系到我哦!