3 min read

Windows SSH

Windows SSH
Photo by Surface / Unsplash

涉及到的话题👇

#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登陆了.