因为习惯于使用 windows 的桌面系统,每次远程连接 windows 系统平台的时候都是使用的例如 teamviewer ,anydesk 以及微软自带的远程连接工具,例如 remote desktop 和 quick assist ,但是总感觉眼花缭乱的界面和频繁的文件夹点击跳转不如 linux 命令行交互来的便捷。故通过引擎娘 搜索了一番,发现果然还是自己才疏学浅,殊不知 windows10 也可以通过一个小小的黑框口实现强大的功能。
PowerShell + sshd
PowerShell 和一般的 shell 有所区别,它有自己的cmdlet
语法,并且对bash 脚本的一些语法做了兼容处理(例如 ps, pwd, man 等指令)
接下来介绍如何使用 PowerShell 安装 OpenSSH ,不需要点击开一个个窗口,只需要几个简单的咒语就可以让 windows 释放这项能力
step0
使用管理员权限打开 PowerShell
step1
检索OpenSSH服务和版本号
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
step2
选择安装客户端(用于发起ssh请求)或者是服务端组件(用于接收请求和执行ssh命令)
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
或
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
step3
如果是用于发起请求的话那么到 step2 就可以了,如果是要作为 SSH 服务器使用,那么还需要启动一下服务,配置并打开亲爱的防火墙
启动服务
Start-Service sshd
为服务命名,并且设置启动类型(这条指令是可选的)
Set-Service -Name sshd -StartupType 'Automatic'
配置防火墙规则,并确认开启
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
网上介绍说 PowerShell 是基于.Net框架和对象的脚本语言。最后一个语句很能看出 PowerShell 的特色。if
语句中查询了指定的防火墙规则的存在状态和启动状态,如果不存在或者不处于启用状态,则创建新的防火墙规则绑定22端口(SSH服务常用端口号),并启用这条规则。如果是已经创建并启用的的规则,则直接输出提示。
感觉有点像是java这种高级语言的写法🤣
更具体的用法可以查阅下方👇资料链接
Q.E.D.