windows 开启 openssh-server
这篇文章是从azure 羊毛(二) | Bao’s 备忘录这里分离出来的。因为我发现给 windows server 2012 开 openssh 的坑远不及于此,这篇按官方教程来的小实践只能算个引子,于是干脆独立出来。
在 windows 10 专业版上部署通过。
参考文章:
- Installation of OpenSSH For Windows Server | Microsoft Docs
- ssh - Setting up OpenSSH for Windows using public key authentication - Stack Overflow
安装,配置服务
安装
| 1 | Add-WindowsCapability -Online -Name OpenSSH.Server | 
配置自启
| 1 | Set-Service -Name sshd -StartupType 'Automatic' | 
配置防火墙(其实我一开始是像 rdp 这边用图形界面配置的,结果软软的教程居然给了命令,学到了,主要是写教程方便不用截图 - -)
| 1 | New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 999 | 
如果用的是默认 22 端口不改其实可以略过这步。咱不习惯用默认端口就是。
更改默认命令行程序为 powershell
| 1 | New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force | 
修改 sshd_config
sshd_config 位于 C:\ProgramData\ssh\sshd_config
修改端口
| 1 | #Port 22 | 
注释掉旧版密钥路径
| 1 | #Match Group administrators | 
关闭密码登录
| 1 | PasswordAuthentication no | 
放入密钥
将公钥放到 C:\Users\zbttl\.ssh里面,改名为authorized_keys。别说你看到这里都还没公钥。。。
可能还要修复公钥的权限。微软官方文章使用的是 opensshutils 这个软件,但这个软件去年就被标记为 deprecated,实在要装只能手动安装,可以参考openssh - PowerShell OpenSSHUtils - Stack Overflow,而且参考文章 2 中写明不建议装。
另外两种方法:
- 直接用 gui 修改权限。右键 - authorized_keys-> 属性 -> 安全 -> 高级 -> 禁用继承,在弹出的对话框选择「将已继承权限转换」。然后删掉多余权限,留下 system 和自己目前所用账号的权限就行。 
- 使用命令 - 1 - get-acl C:\Users\zbttl\.ssh\authorized_keys | fl 
我也不知道哪个好用,因为我几年前从 linux 那边生成的公钥文件貌似没有权限问题。。。
启动
启动服务
| 1 | Start-Service sshd | 
记得登录的是用户名不是 root 而是当前微软账号或者微软本地用户名。