windows 开启 openssh-server

这篇文章是从azure 羊毛(二) | Bao’s 备忘录这里分离出来的。因为我发现给 windows server 2012 开 openssh 的坑远不及于此,这篇按官方教程来的小实践只能算个引子,于是干脆独立出来。

在 windows 10 专业版上部署通过。

参考文章:

安装,配置服务

安装

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
2
#Port 22
Port 999

注释掉旧版密钥路径

1
2
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

关闭密码登录

1
PasswordAuthentication no

放入密钥

将公钥放到 C:\Users\zbttl\.ssh里面,改名为authorized_keys。别说你看到这里都还没公钥。。。

可能还要修复公钥的权限。微软官方文章使用的是 opensshutils 这个软件,但这个软件去年就被标记为 deprecated,实在要装只能手动安装,可以参考openssh - PowerShell OpenSSHUtils - Stack Overflow,而且参考文章 2 中写明不建议装。

另外两种方法:

  1. 直接用 gui 修改权限。右键authorized_keys -> 属性 -> 安全 -> 高级 -> 禁用继承,在弹出的对话框选择「将已继承权限转换」。然后删掉多余权限,留下 system 和自己目前所用账号的权限就行。

  2. 使用命令

    1
    get-acl C:\Users\zbttl\.ssh\authorized_keys | fl

我也不知道哪个好用,因为我几年前从 linux 那边生成的公钥文件貌似没有权限问题。。。

启动

启动服务

1
Start-Service sshd

记得登录的是用户名不是 root 而是当前微软账号或者微软本地用户名。