Mac上的图形和命令行完美统一,一直是我用Mac的最大动力,简直是生产力神器。虽然是苹果前员工,不过说实话再MacOS的更新只停留在换个Dark Mode皮肤这种水平上了,倒是PadOS感觉有些看头。但它老冤家Windows近来的一些更新让我重新对Windows重新燃起兴趣。
Windows上的图形界面很友好,但CMD等命令行功能相比Linux和Mac来说实在太弱了。不过随着Win10开始内置WSL,可以直接在Windows上跑Linux,例如Ubuntu等,再也不用安装Cygwin等第三方软件。再加上.NET和PowerShell等开源并支持跨平台,单看这几招,微软新CEO把MS重新送上全球市值第一的宝座绝对是杠杠的。
PowerShell 6 开始,核心部分已经可以除了Windows之外的Linux/Mac上多平台使用了,而且有了Remote远程登录功能。这个在我看来简直是一个开启新时代的功能,终于可以用命令行远程登录Windows!
以下主要用Win10,以管理员Administrator
这个用户为例,要给这个用户设置好密码
实现这些主要用以下步骤:
- 安装PowerShell 6
- Win10上开启并OpenSSH
安装PowerShell 6
Win10自带有PowerShell,不过要开启远程登录,要用6以上版本,在这里下载安装到默认位置即可,https://github.com/PowerShell/PowerShell
要方便下面OpenSSH的设置,创建一下快捷方式,因为OpenSSH里路径不能用空格,以管理员运行PowerShell,并输入以下命令:
mklink /D c:\pwsh "C:\Program Files\PowerShell\6"
安装配置OpenSSH
用PowerShell安装很简单
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
# This should return the following output:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
如果有就不用,没有的话用以下命令装一下
# 安装OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# 安装 OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# Both of these should return the following output:
Path :
Online : True
RestartNeeded : False
这样安装到C:\Windows\System32\OpehSSH
下,不过配置文件在C:\ProgramData\ssh
。修改下C:\ProgramData\ssh\sshd_config
,
# 打开密码登录
PasswordAuthentication yes
# 开启非对称密钥登录
PubkeyAuthentication yes
# 之前务必已经创建好PowerShell6所在的快捷方式
Subsystem powershell c:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile
记得在防火墙里打开22端口或关闭,不然连接不上。
启动SSH服务
Start-Service sshd
# SSH自动运行
Set-Service -Name sshd -StartupType 'Automatic'
# 看PowerShell有没打开
sshd -T | select-string 'subsystem'
subsystem sftp sftp-server.exe
subsystem powershell c:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile
在Mac上登录Windows
在Mac或Linux上安装好PowerShell6后,开启
# 以下假设192.168.1.12就是Windows机器的IP
$session = New-PSSession -HostName "192.168.1.12" -UserName Administrator
Enter-PSSession $session
# 正常到这里你已经登录Windows!
[Administrator@192.168.1.12]: PS C:\Users\Administrator>