Why SSH refuses a private key with open permissions
A private key proves your identity to a remote server. If any other local account can read it, that account can copy the key and potentially authenticate as you.
OpenSSH checks the file before authentication and ignores keys that are readable by group members or everyone else. Changing the private key to 600 gives read and write access only to its owner.
This check protects the private key, not the public `.pub` file. Public keys can normally use 644 because sharing them does not reveal the secret half of the pair.
OpenSSH for Windows: use icacls instead
Windows OpenSSH usually stores keys in %USERPROFILE%\.ssh. NTFS access rules replace Unix chmod bits, so remove inherited access and grant your account read permission.
icacls "$env:USERPROFILE\.ssh\id_rsa" /inheritance:r
icacls "$env:USERPROFILE\.ssh\id_rsa" /grant:r "$env:USERNAME:(R)"Run these commands in PowerShell and replace id_rsa when your private key has another name.