私钥权限引起的bad permissions问题

问题描述:

在本地使用iTerm2客户端通过私钥连接linux服务器时,报出了以下错误:

Permissions 0644 for '/Users/.../.ssh/xxxxx' are too open.

It is required that your private key files are NOT accessible by others.

This private key will be ignored.

Load key "/Users/.../.ssh/xxxxx": bad permissions

私钥权限引起的bad permissions问题

错误截图

问题原因:

看报出的错误: It is required that your private key files are NOT accessible by others. 翻译就是: (服务器)需要你的私钥文件不能被(除你之外的)其他人访问。

通过ll(ls -a)命令查看该私钥文件的权限,果然是644。

私钥权限引起的bad permissions问题

644的文件权限

为什么私钥文件644就会有错呢?我在网上找到如下解释:

基于“公私钥”认证的方式进行ssh登录的情况,会生成一对公私钥(公钥文件名类似x.pub,私钥文件名x),公钥放在服务器上,自已保留私钥,当进行ssh登录,ssh程序会发送私钥到服务器与服务器上的公钥做匹配,匹配,成功方可登录。这里有一个安全问题,若私钥文件被别人盗取了怎么办?linux中通过强制设私钥文件的权限为700,这样账号没盗取的情况下,私钥文件是不能被访问到的,实现了一定程度上的安全保证。

644权限,所属组用户和其他用户都具有读取的权限,当非法用户知道了私钥的内容,就可以连接服务器,出于安全考虑,服务器要求私钥文件不能被其他人访问(NOT accessible by others)。

解决方案:

使用chmod 600 fileName 命令将私钥文件改为只有自己可读可写,取消其他人的访问权限即可。

私钥权限引起的bad permissions问题

600文件权限


分享到:


相關文章: