问题描述:
在本地使用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问题](http://p2.ttnews.xyz/loading.gif)
错误截图
问题原因:
看报出的错误: It is required that your private key files are NOT accessible by others. 翻译就是: (服务器)需要你的私钥文件不能被(除你之外的)其他人访问。
通过ll(ls -a)命令查看该私钥文件的权限,果然是644。
![私钥权限引起的bad permissions问题](http://p2.ttnews.xyz/loading.gif)
644的文件权限
为什么私钥文件644就会有错呢?我在网上找到如下解释:
基于“公私钥”认证的方式进行ssh登录的情况,会生成一对公私钥(公钥文件名类似x.pub,私钥文件名x),公钥放在服务器上,自已保留私钥,当进行ssh登录,ssh程序会发送私钥到服务器与服务器上的公钥做匹配,匹配,成功方可登录。这里有一个安全问题,若私钥文件被别人盗取了怎么办?linux中通过强制设私钥文件的权限为700,这样账号没盗取的情况下,私钥文件是不能被访问到的,实现了一定程度上的安全保证。
644权限,所属组用户和其他用户都具有读取的权限,当非法用户知道了私钥的内容,就可以连接服务器,出于安全考虑,服务器要求私钥文件不能被其他人访问(NOT accessible by others)。
解决方案:
使用chmod 600 fileName 命令将私钥文件改为只有自己可读可写,取消其他人的访问权限即可。
600文件权限
閱讀更多 京京肚肚擼代碼 的文章