本文主要简述在Win10的台式机上面安装并配置成类 Linux 服务器。
材料:一台可联网的Win10 电脑并配备PowerShell (安装教程) 以及 Git。
要使得 Win10 达到作为服务器的效果,那 OpenSSH是必不可少的。微软的官方文档中给出了一个安装的方法利用 Win10 新增的 feature 特性安装,但是此方法在我的电脑上不可行,尤其是用 PowerShell 安装并配置的过程中多次报错,平时对 PowerShell 接触较少,没有解决相关报错的能力。
为了解决问题,找到了 StackExchange 的问答帖,高赞答主也在尝试之后得出官方教程的不可取之处并给出了解决路径。
- 首先卸载利用 Add feature 进行安装的 OpenSSH,并重启。
- 重启之后遵照微软的 PowerShell 的 github 的教程进行安装,小结如下。
- 确认注意事项以及项目的范围;
- 下载最新的 OpenSSH 安装文件 [下载地址];
- 将下载的zip文件解压到 `C:Program FilesOpenSSH`
- 用管理员权限打开 PowerShell, 进入安装目录,运行
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
5. 为 ssh 设置防火墙,运行指令
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
6. 此时,我们回到微软的官方OpenSSH安装文档 对已经安装了的OpenSSH进行配置,首先我们开启 ssh 服务并设置开机启动以及设置相关的防火墙:
Start-Service sshd
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'
# Confirm the Firewall rule is configured. It should be created automatically by setup.
Get-NetFirewallRule -Name *ssh*
# There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled
# If the firewall does not exist, create one
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
3. 此时就可以用用户名和密码从另一台机器ssh到本机了。但是使用的体验特别差,因为ssh过来之后,默认的 terminal 是 Command,为了避免和 Command 纠缠不清,我们可以通过设置修改默认的terminal,这里,官网教程给出将默认 terminal 设置为 PowerShell 的方法为:
New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force
虽然 PowerShell 比 Command 改进了不少,但是这里还是希望能够用上 bash。这里,我们就考虑使用 Git 附赠的 bash.exe 来代替 PowerShell.exe。找到你的 bash.exe 的位置,例如默认的配置是 "C:Program FilesGitbinbash.exe"。 用这个地址去替换代码中的相应地址就好了,即:
New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:Program FilesGitbinbash.exe" -PropertyType String -Force
大功告成~