通过PowerShell Remoting跨平台登录Windows

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!
[[email protected]]: PS C:\Users\Administrator> 

参考

  • https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/ssh-remoting-in-powershell-core?view=powershell-6

你可能感兴趣的:(通过PowerShell Remoting跨平台登录Windows)