环境
Windows 10 专业版 20H2 操作系统内部版本 19042.746
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
安装
采用 Windows 10 自带的安装方式
系统 -> 应用 -> 可选功能 -> 添加功能 -> OpenSSh 服务器
配置
cmd -> ssh-keygen -> 一路回车或根据提示填写
一路回车:id_rsa 与 id_rsa.pub 将在"c:\Users或用户\User_Name或用户名\.ssh\"目录下
c:\Users或用户\User_Name或用户名\.ssh\
如果看不到以下目录:导航栏(正上方)->查看->勾选:隐藏的项目
如果改名后,双击文件,直接能用记事本打开:导航栏(正上方)->查看->勾选:文件扩展名->删除文件 .txt 后缀
- 标准/普通用户
复制 id_rsa.pub 到"c:\Users或用户\User_Name或用户名\.ssh\"目录下,并改名"authorized_keys"
- 隶属于 Administrators 组的管理员用户
1 复制 id_rsa.pub 到"c:\ProgramDatassh\"目录下,并改名"administrators_authorized_keys"
2 编辑 "C:\ProgramData\ssh\sshd_config"文件,在其中找到"#StrictModes yes",并在下行插入如下内容:
#StrictModes yes
StrictModes no
3 将 id_rsa 移动到 SSH 客户端"c:\Users或用户\User_Name或用户名\.ssh\"下,此处同样以 windows 为例。
无则创建。
重启服务并设置自启
以管理员身份运行 cmd
net stop sshd
net start sshd
安装 SSHD 服务后,默认不开机自启,设置开机自启
以管理员身份运行 cmd
sc config sshd start=auto
问题
错误 1067
启动 OpenSSH SSH Server SSHD 服务,报错 错误 1067。
解决
Permission denied
配置 SSH 证书 密钥 免密 登录 Windows 10,报错:Permission denied (publickey,keyboard-interactive).
解决
“StrictModes=yes”时,目录权限太过宽松则会导致此问题。具体可查看参考中 IBM 相关文档。
编辑 "C:\ProgramData\ssh\sshd_config"文件,在其中找到"#StrictModes yes",并在下行插入如下内容:
#StrictModes yes
StrictModes no
一直要求输入密码
配置 SSH 证书 密钥 免密 登录 Windows 10,一直要求输入密码。
解决
由于用户隶属于 Administrators 组的管理员用户,不能复制 id_rsa.pub 到"c:\Users或用户\User_Name或用户名\.ssh\"目录下,并改名"authorized_keys";
应复制 id_rsa.pub 改名"administrators_authorized_keys",并复制到"c:\ProgramData\ssh\"目录下。
且应该删除"c:\Users或用户\User_Name或用户名\.ssh\known_hosts"文件内与服务端 IP 相同的行。
另类的解决方案
编辑 "C:\ProgramData\ssh\sshd_config"文件,注释文件末尾的管理员配置参数,如下:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
由于 Windows 上的 OpenSSH Server 区分了管理员和标准用户,不清楚这样,是否有问题。
注释后,隶属于 Administrators 组的管理员用户,也将使用"c:\Users或用户\User_Name或用户名\.ssh\authorized_keys"。
参考
github.com/PowerShell/Win32-OpenSSH/issues/1358
woshub.com/using-ssh-key-based-authentication-on-windows/
www.ibm.com/docs/en/was-liberty/zos?topic=system-avoiding-problems-ssh-in-collective
superuser.com/questions/1407020/logging-into-windows-10-openssh-server-with-administrator-account-and-public-key
superuser.com/questions/1445976/windows-ssh-server-refuses-key-based-authentication-from-client
administrators_authorized_keys解决了我的问题,感谢!!
不客气
且应该删除"c:\Users或用户\User_Name或用户名\.ssh\known_hosts"文件内与服务端 IP 相同的行。 这个帮我大忙了,感谢!!