Pom*_*oma 29 ubuntu windows-10 windows-subsystem-for-linux windows-10-v1607
我想在 Windows 启动时在 Linux 子系统(Windows 上的 Ubuntu 上的 Bash)上启动一个 SSH 服务器。问题是当 Bash 窗口关闭时,所有 Linux 进程都会终止。
有没有办法让 Linux 进程在没有 bash 窗口的情况下在后台永久运行?
Pom*_*oma 30
通过aseering找到了一个教程:
这最初是由 github 用户 imjakey、fpqc、qris、therealkenc、Manouchehri 和 aseering(我自己)在这里讨论和整理的:
https://github.com/Microsoft/BashOnWindows/issues/612
请注意,运行 sshd 具有安全隐患。在 WSL 的安全模型需要更长的时间之前,您应该假设任何可以通过 ssh 进入您的 Windows 机器的人都有权以运行 sshd 的 Windows 用户身份执行任何命令,而不管 Linux 级别的权限如何。(权限可能比实践中的限制更多,但 WSL 的初始安全模型并不是很复杂。)
尝试汇总来自 github 的指令:
sudo dpkg-reconfigure
openssh-server在 bash shell 中运行来生成 SSH 主机密钥sudo nano /etc/ssh/sshd_config; 编辑UsePrivilegeSeparation yes要读取的行
UsePrivilegeSeparation no。(这是必要的,因为
UsePrivilegeSeparation使用了chroot()WSL 当前不支持的系统调用。)/etc/ssh/sshd_config,您可以选择更改
PasswordAuthentication no为PasswordAuthentication yes。否则,您将不得不设置 SSH 密钥。/etc/ssh/sshd_config并退出。运行sudo visudo以编辑 sudoers 文件。添加行
$USER ALL = (root) NOPASSWD: /usr/sbin/sshd -D
Run Code Online (Sandbox Code Playgroud)
用您的 Linux 用户名替换“$USER”。保存并退出。如果 visudo 抱怨您的更改无效,请修复它们,直到它报告它们有效;否则你可以在你的系统上破坏 sudo !
autostartssh.vbs在 Windows 中创建一个包含以下内容的文本文件
:
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /usr/sbin/sshd -D'",0
Run Code Online (Sandbox Code Playgroud)
autostartssh.vbs在系统启动时运行的任务。使用wscript.exe作为运行命令和VBS脚本位置作为参数。就是这样——您的 Windows 计算机应该运行 Linux openssh 服务器!
小智 17
创建一个名为的文件wsl_setup.bat并添加内容如下
wsl -u root -e sudo service ssh start
wsl -u root -e sudo service nginx start
Run Code Online (Sandbox Code Playgroud)将wsl_setup.bat文件添加到 Windows 启动文件夹windows-10-change-startup-apps
重新启动并登录您的 Windows 帐户(是的,您需要登录)
| 归档时间: |
|
| 查看次数: |
54501 次 |
| 最近记录: |