Windows SSH
涉及到的话题👇
#Windows #权限修改
OpenSSH可以安装在Windows10以上的系统.Windows Terminal 也默认集成了OpenSSH.
从Linux上导出私钥后通过Windows Terminal上的SSH进行登录, 运气不好的话就会发现出现了"Permission too open"的错误提示:

Picture from here.
上面的连接里也给出了解决办法. 不论是在Linux上还是在Windows上, ssh-server对密钥的权限要求都是严格的: 密钥应当只允许密钥所有者读取或修改.
因此在Linux上通常给密钥的权限都是644或者400.
在Windows上除了可以在GUI上进行属性修改(就是上面链接中的解决办法)也可以用DOS命令来修改文件的权限.
cacls <private-key-name> /t /p %username%:f
%username%就是当前的用户名.
从Linux上拿私钥到Windows上权限会发生变化

这里是在Linux上生成的密钥,权限是644,如果在另一台Linux机器使用这个密钥进行登录是Ok的.
通过WinSCP把私钥放到本机后权限发生了变化:

我们在命令行中查看一下, 权限是一致的:

正是由于这些系统用户或者管理员组的存在,在使用SSH进行通信时才会出现"Permission too open"的问题.
现在来修改一下:

%username%是内置变量,指向当前登录用户
:f意为所有权限(full) (/t /p 可以通过输入cacls查看)

现在只有当前用户是这个私钥的所有者了,可以重新用Windows Terminal进行SSH登陆了.
Member discussion