文章内所有的命令都在power shell内执行,使用右键单击Windows徽标,选择终端管理员即可打开
Windows下OpenSSH的安装
打开Windows power shell,检查SSH服务的安装状态。会返回SSH客户端和服务器的安装状态,一下是两个都安装成功的截图
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
如果没有安装,使用以下命令来安装
# 安装 OpenSSH 客户端
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# 安装 OpenSSH 服务器
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
SSH服务配置
安装完成之后,我们需要先配置一下服务的自启动
Set-Service -Name sshd -StartupType 'Automatic'
然后启动SSH服务器
Start-Service sshd
接着还需要确保22端口被SSH监听,同时防火墙允许连接
netstat -an | findstr /i ":22"
Get-NetFirewallRule -Name *OpenSSH-Server* | select Name, DisplayName, Description, Enabled
# 若安装时未添加防火墙规则
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
密钥配置
SSH使用密钥登录更为方便和安全,我们使用需要连接到这台Windows的设备生成密钥,然后将id_ras.pub中的内容存储到"C:\Users\你的用户名\.ssh\authorized_keys",如果不存在authorized_keys则直接新建一个,然后使用以下命令升级权限
icacls.exe "C:\Users\你的用户名\.ssh\authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
接着还需要修改"C:\ProgramData\ssh\sshd_config",做以下的修改,修改的内容需要管理员权限才能保存
# 允许密钥登录和密钥存储位置,这两条不能被注释
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 这是默认密钥文件的存储位置,可以注释掉
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
SSH登录后默认使用power shell
一般情况下远程登录设备之后用的是默认Windows shell cmd,不是很好用,我们可以更换为power shell
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
重启SSH
最终一切配置妥当后我们重启SSH服务
Start-Service sshd