一台windows AD域中的服务器,需要指定域用户通过ssh来访问。
服务器版本为windows server 2016,没有像win10和windows server 2019一样集成openssh,下载了openssh安装上,通过设置sshd_config文件来实现指定域用户访问的功能。
sshd_config配置文件路径在C:\ProgramData\ssh\下:
在最后一行加上AllowUsers user_name@domain_name
重启sshd服务
测试发现不成功,我所设置的域用户格式是:
XXX.XXX@XXX.com
结果域的administrator账号无法登录,而像XXX.XXX@XXX.com这样用户名带.号的也不行,但是像XXX@XXX.com这样用户名没有带点的居然能登录的
微软docs这篇文章https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_server_configuration
说要用user?domain*的格式来避免与Linux的格式冲突(openssh移植自linux)
但是这种格式也不生效啊。
最后是发现把sshd_config最后面的
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
这两行给注释掉:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
这样AllowUsers这个条目才生效,终于能只使用指定的域用户名来登录了
然后我发现以下三种格式都能成功的:
ssh -p port user@domain@IP
ssh -p port domain\user@IP
ssh -p port user@IP ——这个省略了域名的竟然也成功了
它们其实全部转换成了 域名\用户名@主机 这样的格式
对了,openssh在windows事件查看器里有单独的日志的,排错的时候可以看看