[教程]如何让Windows对SSH的支持就像Linux一样
闲来无事时致力于将Windows变成Linux………..
带有图片的知乎原文 – 知乎不是表面功夫, 而是直接下手到核心功能! 真正的程序员应该追求底层的兼容性以及真实的使用效果! 而不是追求表面看起来一样就行. 咱直接治本.
包括: 开启SSH功能并配置自启, 将ssh重映射到PowerShell. 这样从别处登录就可以更像Linux!
开启ssh功能在UWP设置->应用和功能->可选功能 内启动openssh客户端和服务器 (OpenSSH client & OpenSSH server)启动完成后应该看见2号框框的东西2. 使能SSH服务 (enable OpenSSH server)
因为你是要从其他设备上登录这个计算机的, 但是 OpenSSH server 默认是关闭的. 所以需要启动该服务(守护进程). client客户端不存在这种问题.
PowerShell 管理员权限执行
net start sshd执行后应该开启了ssh服务
启动和停止服务的样子你可以直接搜索PowerShell并且右键管理员运行使用它.
警告: 任何管理员权限的操作都具有危险性! 你应该始终知道自己每一个操作在干什么! 善用搜索, 不仅是百度或者到Windows服务里手动开启或关闭. 也可以配置成自启. (善用搜索打开服务控制界面)
建议直接配置成自启(不要延迟启动! 截图时截错了!) 验证:
打开PowerShell, 自己连接自己(地址输入你的计算机名称或者回环: localhost或者127.0.0.1)
提示输入密码或者出现一长串………..提示输入密码或者出现一长串警告, 让你输入yes/no的一段话, 就证明服务启动成功.
那一段话的意思是确认加密和数据安全什么的. 输入yes然后回车就可以继续输入密码了.
@前面是用户名, 后面是网络地址. 输入你的计算机密码.
这里有一大堆坑………你的计算机用户名可能是Administrator或者你自己设置的奇奇怪怪的名称, 这个还真不好知道, 我当时登录的帐号叫NGC13009. 但是实际用户名是ngc13…..我估计是因为我的Microsoft那里, 输入的姓是ngc13, 名是009的原因 (外国干嘛要把姓和名分开………草) 请自己排查自己的账户名称
然后是计算机密码. 第一, ssh是典型的Linux风格程序, 输入密码是没有回显的 (连占位的星号*都没有), 你只管输入就行了. 输入完回车. 很多人输入了半天还以为是没输入上, 其实只是没有回显而已. 虽然熟练Linux的都知道, 但是还是想提醒….
第二, 你的密码是你的计算机密码, 不是PIN, 如果你是用的本地账户, 那么你应该设置了密码. 注意不是pin码. 如果是Microsoft帐号, 那么这个密码是你的Microsoft账户密码(一般情况下)ssh自动对接到PowerShellssh默认是连接到cmd的. 新时代谁用上个世纪的cmd? 配置一下就行了. 毕竟PowerShell可以使用很多Linux的命令, 像ps, ls, cd, 什么的 (实际上是典型的把猫叫咪, 只是映射了一下)
管理员权限在PowerShell执行以下命令, 使SSH连接Windows时默认使用Powershell[1]
New-ItemProperty -Path “HKLM:\SOFTWARE\OpenSSH” -Name DefaultShell -Value “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” -PropertyType String -Force结束享受新环境吧!
注意! 任何使用administrator用户组ssh登录到Windows后, 都具有完全的管理员权限, 且没有其他提示! 也就是说这相当于root登录到系统. 一定要当心不要误操作.
比较合适的方法是创建一个普通账户, 然后给予ssh登录的权限. 缺点是提权困难.
